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 に答える