MVC3测试ModelState,不包括视图中的属性错误

时间:2012-07-12 09:53:31

标签: asp.net-mvc-3 modelstate validationsummary

我已经在Google和Stack Overflow上进行了一些搜索,但无法找到答案。

我在视图中有以下内容

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

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

我可能需要在此澄清一下,我想进行测试,以便在出现属性错误但没有模型错误时停止写出<br />

1 个答案:

答案 0 :(得分: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;
}