如何从View内部检查特定键是否存在任何ModelState错误(键是模型的字段键)
答案 0 :(得分:11)
如果您还没有,请查看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"] %>