代码之家  ›  专栏  ›  技术社区  ›  JSON

为什么ModelState不为字符串以外的数据类型返回错误消息?

  •  0
  • JSON  · 技术社区  · 6 年前

    下面是我的 ViewModel (VM)匹配我的实体模型。在我的控制器中,我通过添加 ModelState 错误消息使用 ModelState.AddModelError 然后我使用静态方法返回所有错误消息, FormatErrorResponse

    我的问题 如果财产不是 string ,错误消息始终为空!在下面的VM中 AreaCode int ,如果我将其更改为 一串 我得到了错误信息,但不是相反,

    我错过了什么?

    这是我的虚拟机,

    public class SaveViewModel {
         public int AreaCode { get; set; }
         public string PhoneNumber { get; set; }
         public string GenderId { get; set; }
    }
    

    还有我的 FormatErrorResponse格式错误响应 ,则,

    public static object FormatErrorResponse (ModelStateDictionary modelState) {
                var errors = new List<string> ();
                foreach (var state in modelState) {
                    foreach (var error in state.Value.Errors) {
                        errors.Add (error.ErrorMessage);
                    }
                }
    
                var response = new { errorMessages = errors };
                return response;
            }
    

    在我的 API 控制器,

    bool isValidPhoneNumber = this.applicationUserRepository.isValidPhoneNumber (patientUser);
         if (!isValidPhoneNumber) {
           ModelState.AddModelError (string.Empty, "Invalid phone number!");
           return StatusCode (400, StaticHandlers.FormatErrorResponse (ModelState));
          }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   JSON    6 年前

    我的问题是 ModelState 就其本身而言,我在方法的开头有以下代码,

            if (!ModelState.IsValid) {
                return StatusCode (400, StaticHandlers.FormatErrorResponse (ModelState));
            }; 
    

    我的 JSON datatype 和我的VM表示。 我正在提供 string 在我的 JSON 我的虚拟机期望 int

    post 也解释一下这个问题。