0

MVC検証とカスタムJavaScript検証を使用できるようにしたいと思います。
MVC検証は、モデル検証に非常に適しています。ここでの主な問題は、より複雑な検証があることです。

例:MVC検証の場合

<div class="editorSmall">
    <div class="editor-label bold">
        <%: Html.LabelFor(model => model.Location.CurID)%>:
    </div>
        <div class="editor-field">
        <%:Html.DropDownListFor(model => model.Location.CurID, Model.CurrenciesList)%>
        <%: Html.ValidationMessageFor(model => model.Location.CurID)%>
    </div>
</div>

<div class="editorSmall">
    <div class="editor-label bold">
        <%: Html.LabelFor(model => model.Location.UnitID)%>:
    </div>
        <div class="editor-field">
        <%:Html.DropDownListFor(model => model.Location.UnitID,Model.UnitList)%>
        <%: Html.ValidationMessageFor(model => model.Location.UnitID)%>
    </div>
</div>

ご覧のとおり、モデルの検証にはValidationMessageForを使用しています。

例:カスタム検証。
ここでは、リストボックスで検証を実行します。必須にしたい。これは強く型付けされていないため、検証を行う別の方法が必要です。

 <div class="editorSmall" >
        <div class="editor-label bold">
            <label><%:Model.GrpName1%>:</label>
        </div>
        <div class="editor-field">
             <%: Html.ListBox("Model_Groupe1", new MultiSelectList(Model.Groupe1, "GrpDescID", "GrpDescTxt", Model.Groupe1Selected.Select(g => g.GrpDescID)), new { @class = "grplb" })%>
        </div>
    </div>


必要なもの:[送信]ボタンをクリックすると、組み込みのMVC検証とカスタム検証が同時に必要になります...つまり、最初の検証(MVC 1)が無効な場合は、カスタムが必要ですvalidaitonも彼の検証を実行します。

ありがとう

4

1 に答える 1

0

これを処理するためのいくつかの異なる方法を考えることができますが、おそらくすでに考えているように、クライアントでスクリプトが有効になっていない場合、カスタムスクリプトの検証は実行されません。それは問題ではないと思いますか?

その場合:送信ボタンをオーバーライドし、送信する前に検証ロジックを実行します。結果を非表示の入力に入れます。非表示の入力をモデルに追加し、選択の代わりにそれを検証します。

次に、非表示の入力にvalidationmessageを使用してエラーを表示したり、ポストバック後にロジックを再実行したりできます(スクリプトにvalidationmessagesを表示させたい場合)。

于 2011-03-19T00:31:26.563 に答える