ASP.NET Core MVC中,即使DataAnnotations属性设置,为何ModelState.IsValid总是返回true?

2026-04-30 11:4413阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计256个文字,预计阅读时间需要2分钟。

ASP.NET Core MVC中,即使DataAnnotations属性设置,为何ModelState.IsValid总是返回true?

我在Visual Studio 2015中使用了新的MVC6框架,突然所有Data Annotations都停止工作了。我没有修改代码。以下是类定义的一部分:

ASP.NET Core MVC中,即使DataAnnotations属性设置,为何ModelState.IsValid总是返回true?

csharppublic sealed class RegisterUser{ [Required(ErrorMessage=required)] [RegularExpression(@^(\.|.){6,16}$)] // ...}

我在Visual Studio 2015中使用了新的MVC6框架,突然我的所有Data Annotations都停止了工作.所有这些,没有我改变代码.

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”测试(它总是评估为真)?

例如,我传递Name =“x”,它仍然评估为true.好像注释不在那里.

它与使用MvcCore有关吗?

令人沮丧的是,我忘记了改为“核心”项目会消除许多常见功能.所以,在Startup.cs中,添加

> services.AddMvc()

要么

> services.AddMvcCore().AddDataAnnotations()

取决于您的使用情况.

本文共计256个文字,预计阅读时间需要2分钟。

ASP.NET Core MVC中,即使DataAnnotations属性设置,为何ModelState.IsValid总是返回true?

我在Visual Studio 2015中使用了新的MVC6框架,突然所有Data Annotations都停止工作了。我没有修改代码。以下是类定义的一部分:

ASP.NET Core MVC中,即使DataAnnotations属性设置,为何ModelState.IsValid总是返回true?

csharppublic sealed class RegisterUser{ [Required(ErrorMessage=required)] [RegularExpression(@^(\.|.){6,16}$)] // ...}

我在Visual Studio 2015中使用了新的MVC6框架,突然我的所有Data Annotations都停止了工作.所有这些,没有我改变代码.

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”测试(它总是评估为真)?

例如,我传递Name =“x”,它仍然评估为true.好像注释不在那里.

它与使用MvcCore有关吗?

令人沮丧的是,我忘记了改为“核心”项目会消除许多常见功能.所以,在Startup.cs中,添加

> services.AddMvc()

要么

> services.AddMvcCore().AddDataAnnotations()

取决于您的使用情况.