我在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/