5

私は次の見解を持っています:

@using (Html.BeginForm())
{
    <div class="left-column">
        @Html.LabelFor(m => m.Expression)
        @Html.TextAreaFor(m => m.Expression, new { @spellcheck = "false" })
        @Html.EditorFor(m => m.Sku)
    </div>
}

タイマーで毎秒実行される次の JavaScript を使用します。

$("form").validate();

if ($("form").valid()) {
    //...
}

テキスト領域要素 (検証が必要な唯一の要素) に対して次の html を生成します。

<textarea 
    data-val="true"
    data-val-required="The Expression field is required."
    cols="20" rows="2"
    id="Expression" name="Expression"
    spellcheck="false">
</textarea>

問題は、ブラウザ ツールを使用して手動で class="required" を追加しない限り、検証が何も行わないことです。この検証を行うと、「式フィールドが必要です」というエラー メッセージが表示されます。正確には、"$("form").valid()" は textarea が空の場合でも常に true を返します。data-val 属性を自動的に生成する注釈を使用しているので、それらに依存したいと思います。私は何を間違っていますか?

参考までに、スクリプト参照は次のようになります。

<script src="/Scripts/modernizr-2.0.6-development-only.js" ...
<script src="/Scripts/jquery-1.6.2.js" ...
<script src="/Scripts/Parser.js" ...
<script src="/Scripts/jquery.unobtrusive-ajax.js" ...
<script src="/Scripts/jquery.validate.js" ...
<script src="/Scripts/jquery.validate.unobtrusive.js" ...
4

1 に答える 1

1

控えめな Javascript と .NET のクライアント検証を有効にしましたか?

ビューで次のように設定してみてください。

@{  Html.EnableUnobtrusiveJavaScript(true);
    Html.EnableClientValidation(true);
    Html.ValidationSummary(true);   
}

web.configでサイト全体に設定することもできます

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
于 2012-09-03T05:15:48.753 に答える