我在Visual Studio 2015中使用了新的MVC6框架,突然所有的数据注释都停止了工作。所有这些,无需我更改代码。

public sealed class RegisterUser
{
    [Required(ErrorMessage = "required")]
    [RegularExpression(@"^((.|\n)*)$", ErrorMessage = "regex")]
    [StringLength(32, MinimumLength = 3, ErrorMessage = "length")]
    public string Name { get; set; }

    ...
}


[Route(Address + "/membership")]
public class MembershipController : Controller
{
    // POST [address]/membership/register
    [AllowAnonymous]
    [HttpPost("Register")]
    public IActionResult Register([FromBody]RegisterUser model)
    {
        // Validate the input model.
        if (model == null)
            return ...

        if (!ModelState.IsValid)
            return ...

        // Always get HERE
    }
}

到底为什么我要通过“ModelState.IsValid”测试(它始终评估为true)?

例如,我正在传递Name =“x”,但它仍然评估为true。好像注释不存在。

它与使用MvcCore有关吗?

最佳答案

令人沮丧的是,我忘记了更改为“核心”项目会剥夺许多常见功能。因此,在Startup.cs中,添加

  • services.AddMvc()

  • 或者
  • services.AddMvcCore().AddDataAnnotations()

  • 取决于您的用法。

    关于asp.net-core-mvc - 无论DataAnnotations属性如何,ModelState.IsValid始终为true,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38962288/

    10-11 17:42