1

MVC3 + Razor を使用しています。これで、Ajax.BeginForm(...) を含むフォームができました。この投稿で「マキシム」が言ったことを正確にフォローします。

HTML.ValidationMessageFor を使用した ASP.NET MVC AJAX

そして、私の検証ルールは次のように定義されています:

ModelState.AddModelError("ControlName", "error message");

しかし、私の

@Html.ValidationMessageFor(model => Model.OneProperty[0].AnotherProperty) 

私に何もくれませんでした。

また、これらのコードを「エラーの概要」の部分ビューにも入れました。「ValidationSummary」PV でコードが実行されるのを確認できましたが、表示されません。

 if (!ViewData.ModelState.IsValid)
 {
    <div id="errorMessage" class="notificationArea">
             @Html.Partial("ValidationSummary")
    </div>
  }

要するに、私の主な見解は次のとおりです。

@using (Ajax.BeginForm("SaveFromMainView", null, new AjaxOptions
{
    HttpMethod = "POST",
    UpdateTargetId = "myForm"   
}, 
    new { id = "myForm" }))
{           

    @Html.Partial("SamTest1")
}

この「SamTest1」部分ビュー内には、エラー メッセージの箇条書きを表示する別の「ValidationSummary」部分ビューがあります。

そして、私のアクションメソッドは最終的に:

return PartialView("SamTest1"); 

よろしくお願いします!

4

1 に答える 1

1

私はそれを動かしました。実際には、モデルのバインドが正しくないことが原因です。モデルオブジェクトのリストがありますが、ControlFor(model => Model [0] .PropertyName)...のようなものが機能します。実際にはそうではありません。

通常のモデルバインディングに変更すると、検証メッセージが表示されます。

どうもありがとうございました!

于 2012-11-05T05:27:50.723 に答える