如何将错误消息传递给视图?

时间:2011-11-28 22:25:55

标签: asp.net-mvc-3

我想在我的视图中显示错误消息。做这个的最好方式是什么?

什么取代了“???”在我的代码下面?我不想简单地使用Html.ValdiationSummary,因为现在我想我需要自己处理列表并在不同的地方放置某些错误消息。例如,下面的代码实际上需要扩展为将一些错误消息放在浮动div中,而其他代码可能会显示在页面顶部。

有没有更好的方法来完成这项工作?例如我是否应该使用完全不同的方法将错误消息从我的控制器传递到视图?

我的控制器:

public ActionResult ForgotUsername(ForgotUsernameModel model)
{
    ...
    if (!Users.CheckUsername(model.UserName)) {
        ModelState.AddModelError("", "That username does not exist.");
    }
    ....
    return View(model);
}

我的观点:

....
<%
if (???) {
    foreach (KeyValuePair<string, ModelState> item in ViewData.ModelState) {            
        if (item.Value != null && item.Value.Errors != null && item.Value.Errors.Count > 0) {
            foreach (ModelError e in item.Value.Errors) {                       
                Response.Write(String.Format("<div>{0}</div>", e.ErrorMessage));
            }
        }
    }
}
%>

1 个答案:

答案 0 :(得分:3)

<% if (!ViewData.ModelState.IsValid) { %>
    <%= Html.ValidationSummary(true) %>
<% } %>

或简单地说:

<%= Html.ValidationSummary(true) %>
相关问题