2011-09-11 26 views
12

必須のフィールドが5つあるMy View ModelクラスのValidationSummary Htmlヘルパーを追加しました。そして、それはうまく赤い言葉が欠けて1、欠けている2などを持っています。 しかし、私はそれらの5つではない1つのメッセージを表示する必要があります( "あなたの入力は有効ではありません。 ValidationSummaryでこれを行うことはできますか?検証の要約からリストを削除するには

答えて

14

は、次の2つのオプションが(少なくとも)があります。

if (!ModelState.IsValid) 
{ 
    ModelState.AddModelError("myerrorsummary", "The input is not valid"); 
} 

あなたのページに表示:

@Html.ValidationMessage("myerrorsummary") 
+1

、それが唯一のクライアント側を動作しますが、必要があるので、最初のソリューションは、最高のようですUnobtrusiveJavaScriptを使用しないときに機能します。 – pauloya

+0

私の解決策を追加しました。 – pauloya

4

もしあなたがしたいことが単にディスプレイであるなら、ヘルパーをスキップすることは、ModelStateが有効でない場合にはメッセージを表示することができます。 ModelStateViewDataにチェックするだけで問題なく動作します。

いずれかの検証の概要を使用して、プロパティのエラー除外する:

@Html.ValidationSummary(true, "The input is not valid") 

をしたり、アクションのカスタムキーでエラーメッセージを関連付ける

@if (!ViewData.ModelState.IsValid) 
{ 
    <p>Your input is not valid.</p> 
} 
2

あなたはMVC3のソースコードを見れば、あなたはUnobtrusiveJavaScriptEnabledを持ちながら、あなたがexcludePropertyErrors=trueValidationSummaryを使用している場合、現在、レンダリングされ、検証の概要は存在しないだろう、ということがわかります。

クライアント側の検証のために、UnobtrusiveJavascriptを有効にしたMVC3で1つのメッセージしか表示できませんでした。まったく@Html.ValidationSummaryを使用して、レンダリングしないでください:

@{ 
    //Show the message when there are server side errors 
    ViewBag.ValidationSummaryClass = ViewData.ModelState.IsValid ? "validation-summary-valid" : "validation-summary-errors"; 
} 
<div class="@ViewBag.ValidationSummaryClass" data-valmsg-summary="true"> 
    <span>Before you can continue, please make sure you have completed the mandatory fields highlighted above.</span> 
    <ul style="display:none"/> 
</div> 

お知らせdisplay:none、控えめなjavascriptのは、まだエラーメッセージをリストに格納し、それらは隠された保持されます。私はMVC3で使用してきた

0

一つブルートフォースアプローチ:

if (!ModelState.IsValid) 
{ 
    ModelState.AddModelError("", "Some contextual error message"); 
} 

し、あなたのページに表示:

<% if(!ViewData.ModelState.IsValid) { %> 
    <span class="error"><%=ViewData.ModelState[String.Empty].Errors[0].ErrorMessage %> </span> 
<% } %> 
関連する問題