2

我在 Google 和 Stack Overflow 上进行了一些搜索,但找不到这个问题的答案。

我认为有以下几点

@if (!Html.ViewData.ModelState.IsValid)
{
    @Html.ValidationSummary(true)<br />
}

我只对模型错误感兴趣,但如果发现属性错误,测试将返回 true。如何仅测试模型错误?

<br />我可能需要在这里澄清一下,当有属性错误但没有模型错误时,我想做测试以停止被写出。

4

1 回答 1

1

如果你去 ValidationSummary 的来源,你可以找到

IEnumerable<ModelState> modelStates = null;
if (excludePropertyErrors) { 
    ModelState ms;
    htmlHelper.ViewData.ModelState.TryGetValue(htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix, out ms);
    if (ms != null) {
        modelStates = new ModelState[] { ms }; 
    }
} 
else { 
    modelStates = htmlHelper.ViewData.ModelState.Values;
} 

所以我认为你可以制作这样的方法

public static bool ModelStateHasModelErrors(this HtmlHelper htmlHelper) {
   ModelState ms;
   htmlHelper.ViewData.ModelState.TryGetValue(htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix, out ms);
   return ms != null;
}
于 2012-07-12T10:07:40.520 回答