【发布时间】:2012-08-20 17:44:35
【问题描述】:
我在 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 错误。
【问题讨论】:
-
IsValid 有什么作用?为什么不直接使用 ModelState.IsValid
-
同时显示视图标记。
标签: c# asp.net-mvc validation post