ASP.NET MVC 2 RC クライアント側の検証が機能しない
-
22-09-2019 - |
質問
MVC 2 RC アプリではクライアント側の検証が機能していないようです。
私のモデルには次のようなものがあります。
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" />
私が間違っていることについて何かアイデアがあれば。何か簡単なことが欠けているように感じますし、MVC 2 のドキュメントはまばらです。
編集: リンクを追加しました:
<link href="../../Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />
そして、回答内のリンクからダウンロードする必要があったファイルをプロジェクトに含めました。まだまったく機能しません。他に何かアイデアはありますか?
編集: Visual Studio 2008 を MVC 2 RC で使用しています (ベータ版ではありません) そして、RC リリースで動作するクライアント側検証のダウンロード可能なサンプルまたは投稿されたサンプルを探しています。
解決 2
[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>
すべてが、その後動作します。私はそれを言及したすべての記事をupvotedていますので、あなたは間違いなく、先物から「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人のいくつかの悲しみを救うことができると思います。
すべてのあなたの助けをもう一度感謝します。
他のヒント
MVC 2 ベータ版からプロジェクトを更新する場合は、次を使用します。 /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 の適切なバージョンにはこれが含まれています $(ドキュメント).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 リリースの場合)。
あなたはのMicrosoftMvcJQueryValidation.js のファイルをインクルードする必要があります
<link href="MicrosoftMvcJQueryValidation.js" type="text/javascript" />
これを確認してください: MVC 2ベータ2?の
のためのMicrosoftMvcJQueryValidation.jsの正しいバージョンはどこです次は、ちょうどビューページでHtml.EnableClientValidation();
どこかに置きます。
それは にする必要がありますが、クライアント側の検証する最初のフォームの前にあること。私はのSite.Master のページを好むます。
ASP.NET MVC 2 RCに関するワーキングます。
あなたは必ず正しいJSファイルが含まれていますか?それの中フィルハークの投稿はMicrosoftMvcJQueryValidation.js
代わりに付属しているので、 MicrosoftMvcValidation.js
のます。
彼はまた、ビューでClientValidationFunction
プロパティを設定します:
<% ViewContext.FormContext.ClientValidationFunction
= "EnableClientValidation"; %>
RCが、ベータ版ではなかったもののます。
ASP.NET MVC 2 リリース候補のデフォルト (および Microsoft によってのみサポートされている) 検証システムは、jQuery Validate を使用しません。代わりに、MicrosoftMvcValidation.js 内に完全に存在する新しい検証システムを使用します (ただし、MicrosoftAjax.js も含める必要があります)。
jQuery Validate ライブラリを使用する場合は、ASP.NET MVC Futures プロジェクト (利用可能) の一部として含まれています。 ここ)、これは別のダウンロードであり、独自のアダプター スクリプト ファイルがあります。
また、 Html.ValidationSummary()
ヘルパーに新しいクライアント側機能を持たせたい場合は、フォーム内にヘルパーを含める必要があると思います。フォームの外にある場合でも機能しますが、サーバー側でのみ機能します。