ASP.NET Core MVC中,无论DataAnnotations属性如何设置,为何ModelState.IsValid总是显示为true?

2026-03-30 12:141阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

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

ASP.NET Core MVC中,无论DataAnnotations属性如何设置,为何ModelState.IsValid总是显示为true?

在Visual Studio 2015中使用MVC6框架时,所有Data Annotations突然失效,代码未作改动。问题可能出在:

csharppublic sealed class RegisterUser{ [Required(ErrorMessage=required)] [RegularExpression(@^\((\d{3})\)\s?(\d{3})[-.\s]?(\d{4})$, ErrorMessage=Invalid format)] public string PhoneNumber { get; set; }}

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

ASP.NET Core MVC中,无论DataAnnotations属性如何设置,为何ModelState.IsValid总是显示为true?

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

它与使用MvcCore有关吗?

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

> services.AddMvc()

要么

> services.AddMvcCore().AddDataAnnotations()

取决于您的使用情况.

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

ASP.NET Core MVC中,无论DataAnnotations属性如何设置,为何ModelState.IsValid总是显示为true?

在Visual Studio 2015中使用MVC6框架时,所有Data Annotations突然失效,代码未作改动。问题可能出在:

csharppublic sealed class RegisterUser{ [Required(ErrorMessage=required)] [RegularExpression(@^\((\d{3})\)\s?(\d{3})[-.\s]?(\d{4})$, ErrorMessage=Invalid format)] public string PhoneNumber { get; set; }}

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

ASP.NET Core MVC中,无论DataAnnotations属性如何设置,为何ModelState.IsValid总是显示为true?

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

它与使用MvcCore有关吗?

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

> services.AddMvc()

要么

> services.AddMvcCore().AddDataAnnotations()

取决于您的使用情况.