2

Html.EditorFor(検証属性は、ヘルパー メソッドを介して作成された要素にのみ追加され、Html.BegingForm()メソッド内にあり、それぞれ「フォーム」タグと属性を作成することに気付きました。

もちろん、要素と属性を手動で作成する以外に、ヘルパーメソッドで作成され、Html.BegingForm()メソッド内にない要素に必要な検証属性を追加する方法はありますか?

クライアント側で検証する必要があり、手動で前述の属性を作成したり、この動作を明示的にスクリプト化したりしたくありません。代わりに、jquery-validate で使用するモデルのメタデータに従って、前述の属性を自動的に追加する MVC 機能を利用します。クライアント側のプラグイン。

4

1 に答える 1

2

目立たない検証属性は、次の場合にのみ発行されます。

  • UnobtrusiveJavaScriptEnabledフラグが設定されていますtrue
  • そうでViewContext.FormContextはありませんnull(たとえば、Html ヘルパーはHtml.BeginFormブロック内で実行されます) 。

したがって、Html ヘルパーを使用する前に、手動で を作成しFormContextて割り当てることができます。ViewContext.FormContext

@{
    ViewContext.FormContext = new FormContext();
}

@Html.TextBoxFor(x => x.SomeProperty)

ただし、このアプローチでは入れ子からの機能が失われることに注意してください。そのため、新しい論理フォームを作成する場合は、古いコンテキストを自分でHtml.BeginForm再度作成して管理する必要があります。new FormContext()

于 2012-11-12T06:08:55.840 に答える