2012-02-09 1 views
5

私は、次のコードを持っている:@ Html.ValidationSummaryはMVC3またはMVC4のクライアント側の検証に使用できますか?

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx") 

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 

私は999の順序値を入力すると、私はすぐにちょうど注文テキストボックスの後に私にエラーメッセージを示し、クライアント側の検証を取得します。しかし、Html.ValidationSummary領域には何も表示されません。クライアント側の検証でこれを使用することは可能ですか?ここで

は私のモデルである:

public class Menu 
{ 
    [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")] 
    [DisplayName("Order")] 
    public int Order { get; set; } 

私のWeb構成:

<appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

答えて

4

私は100%確実ではないが、私はMVC 3デフォルトのアプリケーションで見つけることができるの検証概要は内にあり形。おそらく、あなたの検証サマリーがフォームの外にあって、更新されないためです。 フォーム内で検証サマリを移動するとどうなりますか?

から:

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx") 

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 

へ:

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    @Html.ValidationSummary(false) 
    @Html.ValidationSummary(true, "xxx") 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 
+1

私はこれを試してみましたが、それだけで同じです。まだ動作しません。私がしたことは、フォームの内部の一番上にHtml.ValidationMessageForを移動することでした。これはうまくいきますが、実際にはページの上部に多くのHtml.ValidationMessageForを入れたくありません。 –

+0

引用: '私がしたことは、Html.ValidationMessageForをフォームの内部の一番上に移動することでした。 'これは、検証の要約が内部にある' To: 'の後のコード形。だから私はあなたが何を意味するのか分からない。私はこれを試した。それはまったく同じだ。まだ動作しません。 – Nope

+1

「しかし、私は本当にたくさんのHtml.ValidationMessageを持っていますが、ページの上部にあるすべてのものを順番に選択してください」ということは、設計上の選択です。要約は表示されませんでした。それらを提示し、スタイルを設定する方法は、私が推測する別の話です。 – Nope

関連する問題