Asp.net mvc 2 检查Html.ValidationSummary()是否有值

Asp.net mvc 2 检查Html.ValidationSummary()是否有值,asp.net-mvc-2,Asp.net Mvc 2,如何检查Html.ValidationSummary()是否有任何错误 所需的最终结果: <% if(I_HAVE_ERRORS) {%> <div><%= Html.ValidationSummary() %></div> <%}%> 换句话说,我如何确定“我有错误”?与razor语法一起使用 @if (!Html.ViewData.ModelState.IsValid) { // show error } 或者可以将

如何检查Html.ValidationSummary()是否有任何错误

所需的最终结果:

<% if(I_HAVE_ERRORS) {%>
<div><%= Html.ValidationSummary() %></div>
<%}%>

换句话说,我如何确定“我有错误”?


razor
语法一起使用

@if (!Html.ViewData.ModelState.IsValid)
{
    // show error
}
或者可以将其包装为一个扩展方法

public static bool HasErrors(this HtmlHelper helper)
{
    return helper.ViewData.ModelState.IsValid == false;
}
把它当作

@if (Html.HasError())
{
    // show error
}

实际上,我认为检查验证错误(不仅仅是基于模型自动生成的错误)最正确的方法是

@if (Model.ViewData.ModelState.ErrorCount > 0)
{
}

这样,它将包括用户生成的模型错误。

如果需要检查与任何特定字段无关的错误,可以尝试以下操作:

@if(Html.ViewData.ModelState.ContainsKey(string.Empty))
{
    <div class="panel panel-danger">
        <div class="panel-heading">
            @Html.ValidationSummary(true)
        </div>
    </div>
}
@if(Html.ViewData.ModelState.ContainsKey(string.Empty))
{
@Html.ValidationSummary(true)
}

供将来参考:仅显示非模型错误(当属性名称为string.Empty时):
@if(this.Html.ViewData.ModelState.Any(m=>m.Key==string.Empty)){@this.Html.ValidationSummary(true)}
谢谢,这对我帮助很大!
@if(Html.ViewData.ModelState.ContainsKey(string.Empty))
{
    <div class="panel panel-danger">
        <div class="panel-heading">
            @Html.ValidationSummary(true)
        </div>
    </div>
}