Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心模型验证错误以错误的顺序显示_C#_Asp.net Core - Fatal编程技术网

C# ASP.NET核心模型验证错误以错误的顺序显示

C# ASP.NET核心模型验证错误以错误的顺序显示,c#,asp.net-core,C#,Asp.net Core,问题: 模型错误不会根据模型定义显示,而是随机显示 这在ASP.NET核心应用程序中发生。我在常规asp.net mvc应用程序中从未遇到过此问题 在asp.net core razor页面中是否需要启用任何设置?还是我做错了什么。请帮忙 用户界面显示 错误以随机格式显示: 需要DOB需要姓氏需要儿童EI ID需要名字需要学区需要转诊日期 视图模型定义: public class DocumentViewModel { [Required(ErrorMessage = "First N

问题: 模型错误不会根据模型定义显示,而是随机显示

这在ASP.NET核心应用程序中发生。我在常规asp.net mvc应用程序中从未遇到过此问题

在asp.net core razor页面中是否需要启用任何设置?还是我做错了什么。请帮忙

用户界面显示 错误以随机格式显示:

  • 需要DOB
  • 需要姓氏
  • 需要儿童EI ID
  • 需要名字
  • 需要学区
  • 需要转诊日期
    • 视图模型定义:

      public class DocumentViewModel 
      {
          [Required(ErrorMessage = "First Name is required")]
          [RegularExpression(@"^[a-zA-Z- ']+$", ErrorMessage = "First Name should not contain any special character or number.")]
          public string FirstName { get; set; }
      
          [Required(ErrorMessage = "Last Name is required")]
          [RegularExpression(@"^[a-zA-Z- ']+$", ErrorMessage = "Last Name should not contain any special character or number.")]
          public string LastName { get; set; }
      
          [Required(ErrorMessage = "Child EI ID is required")]
          public int? ChildEIID { get; set; }
      
         [Required(ErrorMessage = "DOB is required")]
         [DataType(DataType.Date)]
          public DateTime? DOB { get; set; }
      
          [Required(ErrorMessage = "District is required")]
          public string District { get; set; }
      
          [Required(ErrorMessage = "Date Of Referral is required")]
          [DataType(DataType.Date)]
          public DateTime? DateOfReferral{ get; set; }
      
      }

      发布方法

       [HttpPost]
       [AutoValidateAntiforgeryToken]
          public ActionResult Documents(UploadDocumentViewModel viewModel)
          {
      
      
              //string errorMessages = "";
              if (!ModelState.IsValid)
              {
                  return ModelErrors();
              }
      
              return Json(new { status = "success", message = "Documents Uploaded." });
          }
      
      private ActionResult ModelErrors()
          {
              var modelStateErrors = this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors);
              var message = "<ul>";
      
              foreach (var modelStateError in modelStateErrors)
              {
                  message += "<li>" + modelStateError.ErrorMessage + "</li>";
              }
              message += "</ul>";
              return Json(new { status = "error", message = message });
          }
      
      模型错误返回方法

       [HttpPost]
       [AutoValidateAntiforgeryToken]
          public ActionResult Documents(UploadDocumentViewModel viewModel)
          {
      
      
              //string errorMessages = "";
              if (!ModelState.IsValid)
              {
                  return ModelErrors();
              }
      
              return Json(new { status = "success", message = "Documents Uploaded." });
          }
      
      private ActionResult ModelErrors()
          {
              var modelStateErrors = this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors);
              var message = "<ul>";
      
              foreach (var modelStateError in modelStateErrors)
              {
                  message += "<li>" + modelStateError.ErrorMessage + "</li>";
              }
              message += "</ul>";
              return Json(new { status = "error", message = message });
          }
      
      private ActionResult ModelErrors()
      {
      var modelstatererrors=this.ModelState.Keys.SelectMany(key=>this.ModelState[key].Errors);
      var message=“
        ”; foreach(modelStateErrors中的var modelStateError) { message+=“
      • ”+modelstatererror.ErrorMessage+”
      • ”; } 消息+=“
      ”; 返回Json(新的{status=“error”,message=message}); }
      如果希望对错误消息进行排序,则应定义排序条件。显然,你已经发现了一种不存在确定性顺序的情况

      如果要按属性名称对错误进行排序,则应遵循以下技巧:

      var modelStateErrors = this.ModelState.Keys.OrderBy(x => x).SelectMany(key => this.ModelState[key].Errors);
      
      如果希望按其他条件对键进行排序,可以创建一个属性来装饰属性,并使用反射按该顺序对错误消息进行排序


      然而,在2020年,在输入表单下面出现这种错误消息列表是非常罕见的。相反,您应该在无效输入表单字段的旁边(或下面)显示每个特定的错误消息。此外,您可以在ul/li摘要中显示所有没有键的ModelState错误(因为它们不能位于输入字段旁边)。如果存在不直接属于特定输入字段的验证错误,则可能会出现这种情况。

      如果希望对错误消息进行排序,则应定义排序条件。显然,你已经发现了一种不存在确定性顺序的情况

      如果要按属性名称对错误进行排序,则应遵循以下技巧:

      var modelStateErrors = this.ModelState.Keys.OrderBy(x => x).SelectMany(key => this.ModelState[key].Errors);
      
      如果希望按其他条件对键进行排序,可以创建一个属性来装饰属性,并使用反射按该顺序对错误消息进行排序

      然而,在2020年,在输入表单下面出现这种错误消息列表是非常罕见的。相反,您应该在无效输入表单字段的旁边(或下面)显示每个特定的错误消息。此外,您可以在ul/li摘要中显示所有没有键的ModelState错误(因为它们不能位于输入字段旁边)。如果存在不直接属于特定输入字段的验证错误,则可能会出现这种情况