以下是与我的实体模型匹配的ViewModel
(VM)的快照。在我的控制器中,我通过使用ModelState
添加ModelState.AddModelError
错误消息来处理验证,然后使用静态方法FormatErrorResponse
返回所有错误消息。
我的问题如果属性不是string
,则错误消息始终为空!在下面的VM AreaCode
是int
,如果我将其更改为string
,我会收到错误消息,但不是相反,
我在这里缺少什么?
这是我的VM,
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));
}
答案 0 :(得分:0)
我的问题是ModelState
本身,我在方法的开头有以下代码,
if (!ModelState.IsValid) {
return StatusCode (400, StaticHandlers.FormatErrorResponse (ModelState));
};
我的JSON
datatype
与我的VM代表之间存在冲突。
我在string
中提供JSON
,我的虚拟机期待int
。
这个post也解释了这个问题。