我在 asp.net-mvc 页面中发布了一个表单。这是我的控制器操作:
public ActionResult UpdateData(MyFormObject entity)
{
bool isValid = IsValid(entity);
if (!isValid)
{
var firstError = ModelState.Values.SelectMany(v => v.Errors).First();
throw new HttpException(404, firstError.ErrorMessage);
}
return Json(BuildResult(entity));
}
即使帖子通过了我所有的显式验证逻辑,当我检查 ModelState 时,我也会看到错误。当我的任何属性为空时,我在 ModelState 中看到错误。这是我的对象:
public class MyFormObject
{
public int Id{ get; set; }
public int TestId{ get; set; }
public int OtherId{ get; set; }
}
我正在查看 Model.State 并且我看到我的对象中未填充的任何元素的错误。
如果我将其更改为(注意:“?”)
public class MyFormObject
{
public int? Id{ get; set; }
public int? TestId{ get; set; }
public int? OtherId{ get; set; }
}
然后我不再收到任何错误。这里是否有一些我没有设置的默认验证。我试图弄清楚在上面的第一种情况下是什么设置了 ModelState 错误。