2

ビューに次のフォームがあります。

@using (Html.BeginForm())
{
    @Html.DropDownListFor(m => m.ModelValue, Model.ModelSelectList, " - ", new {@class = "kendo-skip-dropdown"})
    @Html.ValidationMessageFor(m => m.ModelValue)
    <input type="submit" />
}

また$("select").not(".kendo-skip-dropdown").kendoDropDownList();、_Layout.cshtml のページ ロード コードで呼び出しを行い、すべてのselect要素を Kendo DropDownListウィジェットとしてスタイル設定します。

ModelValue == nullすべてのテストに当てはまり、kendo-skip-dropdownクラスが適用されると、ドロップダウンは完全に標準になり、値を選択せず​​に投稿しようとすると、予想される「フィールドが必要です」というクライアント側エラーが発生します。クラスを削除してkendo-skip-dropdownKendo UI に作業を任せ、値を選択せず​​に投稿しようとすると、クライアント側で「数値でなければならない」というエラーが表示され、optionLabelデフォルトが値として受け入れられるようになりました。

Kendo を使用するときにドロップダウン用にレンダリングされる HTML は次のとおりです。

<span tabindex="0" style="" class="k-widget k-dropdown k-header"><span class="k-dropdown-wrap k-state-default k-state-hover"><span class="k-input">-</span>
    <span class="k-select"><span class="k-icon k-arrow-down">select</span></span></span>
    <select data-val="true" data-val-number="The field ModelValue must be a number." data-val-required="The ModelValue field is required." id="ModelValue"
        name="ModelValue" style="display: none;" class="input-validation-error">
        <option>-</option>
        <option value="1">One</option>
        <option value="2">Two</option>
        <option value="3">Three</option>
        <option value="4">Four</option>
    </select></span>

ここで何が違うのでしょうか?剣道以外の選択リストと剣道の選択リストの間で私の検証を一貫させる方法を誰か教えてもらえますか?

4

1 に答える 1

0

個人的には、検証の大部分にデータ注釈を使用しています。標準のバリデーターと Kendo のバリデーターの違いについて深く掘り下げる必要はありませんでしたが、[必須] などの属性を使用する必要がありました。

もうドキュメントを見ましたか?それは、標準タイプと剣道タイプで異なる順序で適用される 1 つのルールに沿ったものかもしれません (剣道では、最初に必須をチェックして停止します。標準では、最初に数値をチェックしますか?)

一貫性を保証する 1 つの方法は、Kendo Validator を常に使用することです。または、ヘルパーをオーバーライドして、標準の ValidationMessage が 2 つの間で一貫していることを確認することもできます。

于 2012-11-21T22:08:01.410 に答える