5

MVC2RCアプリでクライアント側の検証が機能していないようです。

私のモデルには次のものがあります。

public class ExampleModel
{
    [Required(ErrorMessage="Test1 is required")]
    [DisplayName("Test1")]
    public string Test1 { get; set; }

    [Required(ErrorMessage="Test2 is required")]
    [DisplayName("Test2")]
    public string Test2 { get; set; }
}

私のビューには次のコードがあります。

<% Html.EnableClientValidation(); %>
<%= Html.ValidationSummary(true, "Test was unsuccessful.") %>    
<% using (Html.BeginForm()) { %>
<div>
    <div class="editor-label">Test1:</div>
    <div class="editor-field">
        <%= Html.TextBoxFor(m => m.Test1) %>
        <%= Html.ValidationMessageFor(m => m.Test1) %>
    </div>

    <div class="editor-label">Test2:</div>
    <div class="editor-field">
        <%= Html.TextBoxFor(m => m.Test2) %>
        <%= Html.ValidationMessageFor(m => m.Test2) %>
    </div>

    <p>
        <input type="submit" value="Test" />
    </p>
</div>

両方のフィールドを空白のままにして[テスト]ボタンをクリックすると、クライアント側の検証が行われずに、コントローラーのポストハンドラーに直接移動します。何が欠けているのかわかりません。

次のJavaScriptもビューに含まれています(すべてが必要かどうかはわかりません)。

<link href="../../Scripts/jquery-1.3.2.min.js" type="text/javascript" />
<link href="../../Scripts/jquery.validate.min.js" type="text/javascript" />    
<link href="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript" /> 

私が間違っていることについての考え。単純なものが欠けているように感じ、MVC2のドキュメントはまばらです。

編集:私はリンクを追加しました:

<link href="../../Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />

そして、回答のリンクからダウンロードしなければならなかったファイルをプロジェクトに含めました。まだまったく機能していません。他のアイデアはありますか?

編集:私はMVC 2 RC(ベータ版ではない)でVisual Studio 2008を使用しており、RCリリースで動作するクライアント側の検証のダウンロード可能または投稿された例を探しています。

4

5 に答える 5

7

MVC 2 Beta からプロジェクトを更新する場合は/src/MvcFutures/MicrosoftMvcJQueryValidation.js、MVC 2 RC ソース コード パッケージから (リンク) を使用します。古いベータ版は、RC の jquery.validation で正しく動作しません。必要な JavaScript ファイルは次のとおりです。

<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript" />
<script src="/Scripts/jquery.validate.min-vsdoc.js" type="text/javascript" />
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />

MicrosoftMvcJQueryValidation.js の正しいバージョンには、次の$(document).ready()関数が含まれています。

// need to wait for the document to signal that it is ready
$(document).ready(function() {
    var allFormOptions = window.mvcClientValidationMetadata;
    if (allFormOptions) {
        while (allFormOptions.length > 0) {
            var thisFormOptions = allFormOptions.pop();
            __MVC_EnableClientValidation(thisFormOptions);
        }
    }
});

ファイルの終わり (RC リリース)。

于 2010-01-04T18:44:18.413 に答える
7

OK、私はこれを理解しました...そしてそれは100%私のせいです. ただし、いくつかの投稿には、私が必要としていた情報も含まれていました。

誰も気付かなかったことに驚いた主な問題は、スクリプトを含めるための HTML でした...私の投稿を調べて、問題がわかるかどうかを確認してください。

<link href=...適切なタグの代わりにタグを使用していました<script src=...。何も考えずに CSS リンクをすばやくカット アンド ペーストし、タイプとファイルを変更しただけだったので、完全に私のせいです。ああ!!!

とにかく、必要な正しいリンクは次のとおりです。

<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script>

その後、すべてが機能します。futures プロジェクトの 'MicrosoftMvcJQueryValidation.js' ファイルを必ず含める必要があるため、それについて言及したすべての投稿に賛成票を投じています。

そのファイルは含まれていませんが、すぐに使用できます。JQuery の使用を心配していない場合は、次のインクルードを使用して、RC ですぐに使用できる Microsoft 実装を使用できます。

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>    

少なくとも 1 人の悲しみを救えることを願っています... インクルードを台無しにして、すっごく長い間それに気付かなかったなんて、いまだに信じられません。

あなたのご親切に感謝します。

于 2010-01-07T18:44:32.147 に答える
3

MicrosoftMvcJQueryValidation.jsファイルを含める必要があります:

<link href="MicrosoftMvcJQueryValidation.js" type="text/javascript" />

これを確認してください:MVC 2ベータ2用のMicrosoftMvcJQueryValidation.jsの正しいバージョンはどこにありますか?

次にHtml.EnableClientValidation();、表示ページのどこかに配置します。クライアント側で検証する最初のフォームの前にある必要があります。Site.Masterページが好きです。

ASP.NET MVC2RCでの作業。

于 2010-01-04T10:20:21.077 に答える
2

ASP.NET MVC 2 Release Candidate の既定の (そして Microsoft によってのみサポートされている) 検証システムは、jQuery Validate を使用しません。代わりに、MicrosoftMvcValidation.js に完全に存在する新しい検証システムを使用します (ただし、MicrosoftAjax.js も含める必要があります)。

jQuery Validate ライブラリを使用する場合は、別のダウンロードである ASP.NET MVC Futures プロジェクト (ここから入手可能) の一部として含まれており、独自のアダプター スクリプト ファイルがあります。

また、Html.ValidationSummary()ヘルパーに関しては、新しいクライアント側の機能を持たせたい場合は、フォーム内に含める必要があると思います。フォームの外にある場合でも機能しますが、サーバー側でのみ機能します。

于 2010-01-04T07:21:37.470 に答える