1

jqueryダイアログボックスにログイン部分ビューがあります。空のテキストボックスで「ログイン」ボタンをクリックすると、エラーが表示されますが、サーバーにnull値が送信され、このエラーが発生します。クライアント検証を使用したいのですが、ダイアログの部分ビューが html 入力に変わりません .... また、 Unobtrusive を使用しようとしましたが、IE9 でさまざまなエラーが発生しました。

今、私はこれらのスクリプトを使用しました:

 <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

Unobtrusive を使用せずにクライアントを検証するにはどうすればよいですか?

4

1 に答える 1

2

目立たないプラグインを使用したくない場合は、jquery 検証プラグインを手動で構成する必要があります。これには複数の方法があります。次のリンクから開始することをお勧めします: http://docs.jquery.com/Plugins/Validation

ただし、目立たない検証プラグインを使用しないと、MVC 3 のクライアント検証に関して既に導入されているすべてのインフラストラクチャ (プログレッシブ拡張や、データ注釈に基づくクライアント側とサーバー側の両方の検証など) の恩恵を受けられないことを考慮してください。

ASP MVC 3 に付属している jquery.validate.unobtrusive スクリプトは、MVC 3 にも付属している jquery バージョン 1.5.1 に依存しています。おそらくそれより高いバージョンでも動作するでしょう (私はバージョン 1.6.4 で使用しました)。 1.4.4 などの下位バージョンでは不明です。jquery.validation スクリプトも jquery のバージョンに依存します。たとえば、jquery.validation 1.8 は jquery 1.5.1 とうまく連携しますが、jquery 1.6.4 を使用している場合は jquery.validation 1.10 にアップグレードする必要があります。

したがって、デフォルトの MVC 3 アプリケーションから、次のスクリプトを使用できます。

    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

これらの設定を構成ファイルに追加して、MVC アプリケーションでクライアント側の検証が有効になっていることも確認してください (新しい MVC 3 アプリケーションの作成時にデフォルトで設定されます)。

<configuration>
  ...
  <appSettings>
    ...
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    ...
  </appSettings>

最後に、validate unobtrusive スクリプトは、ドキュメントが最初にロードされるときにドキュメントを実際に解析することを考慮してください。jquery.validate.unobtrusive.js ファイルを調べると、ドキュメントの最後に次の行が表示されます。

$(function () {
    $jQval.unobtrusive.parse(document);
});

そのため、ページが最初にロードされた後に DOM にロードされたものは、目立たない検証では処理されず、手動で解析する必要があります。これは、ページまたは一般的な JavaScript ファイルに含まれる次のような関数を定義することで実行できます。

function partialViewLoaded(request, status, partialViewId) {
    if (request.responseText != "") {
        //Hook validations on elements of the loaded view
        $.validator.unobtrusive.parse($(partialViewId));        
    }
}

その関数は、ajax を使用して部分ビューを読み込んだ後に呼び出されます。MVC Ajax ヘルパーを使用している場合は、次のような完全なコールバックを設定できます (ID が「loginForm」の要素にビューをロードしていると仮定します)。

@using(Ajax.BeginForm(new AjaxOptions{ 
                           UpdateTargetId = "loginForm", 
                           OnComplete = "partialViewLoaded(xhr, status, '#loginForm')" })){

jquery を使用して ajax 呼び出しを手動で実行している場合は、次のように完全なコールバックを設定することもできます。

$.ajax({
     url: "yourURL",
     complete: function(xhr, status){
         partialViewLoaded(xhr, status, "#loginForm");
     }
});
于 2012-11-19T22:12:08.480 に答える