【问题标题】:MVC3 Testing ModelState excluding property errors in a viewMVC3 测试 ModelState 排除视图中的属性错误
【发布时间】:2012-07-12 01:18:04
【问题描述】:

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

我的观点如下

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

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

我可能需要在这里澄清一下,我想做测试以在出现属性错误但没有模型错误时停止写出&lt;br /&gt;

【问题讨论】:

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


    【解决方案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;
    }
    

    【讨论】:

    • 如果我错了,请纠正我,但只显示模型错误,该参数应设置为 true。我编辑了原始帖子,试图澄清我想要实现的目标。
    • @WhiteWade 哦哦哦,你是对的,对不起。好吧,已编辑,但对您没有帮助。我会努力寻找更好的方法。
    • 感谢您的帮助。几乎完美。只需将this HtmlHelper helper 更改为this HtmlHelper htmlHelper
    猜你喜欢
    • 2011-11-17
    • 2011-09-19
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多