如何检查View内部是否存在特定键的任何ModelState错误(键是模型的字段键)
解决方法
如果您还没有,请查看
the MVC pattern上的这篇wiki文章.
请记住,您的视图应该只负责显示数据.因此,您应该尽量将视图中的逻辑数量保持在最低水平.如果可能,则在控制器中处理ModelState错误(因为ModelState错误是模型绑定尝试失败的结果):
public class HomeController : Controller { public ActionResult Index() { if (!ModelState.IsValid) { return RedirectToAction("wherever"); } return View(); } }
如果必须在视图中处理ModelState错误,可以这样做:
<% if (ViewData.ModelState.IsValidField("key")) { %> model state is valid <% } %>
但请记住,您可以使用控制器完成相同的操作,从而从您的视图中删除不必要的逻辑.为此,您可以将ModelState逻辑放在控制器中:
public class HomeController : Controller { public ActionResult Index() { if (!ModelState.IsValidField("key")) { TempData["ErrorMessage"] = "not valid"; } else { TempData["ErrorMessage"] = "valid"; } return View(); } }
然后,在您的视图中,您可以引用TempData消息,这可以减轻任何不必要的逻辑构造的视图:
<%= TempData["ErrorMessage"] %>