サーバー上のビューでレンダリングしているPartialViewの場合は、Daveの方法が最適です。コードをDOMreadyイベントに接続するだけです。
$(document).ready(function(){
//Javascript logic to fire goes here
});
または、速記バージョンを使用する場合...
$(function(){
//Javascript logic to fire goes here
});
Ajaxを介してロードされている部分ビューをレンダリングしている場合は、同じ方法が機能します。jQueryは、正しく思い出せば、DOMに接続されるとAjaxを介してクライアントに返されるhtmlでjavascriptを実行します(これをテストしてみてください。DOMに接続されると起動することについてメモリを調べますが、これは信じていますはload()
メソッドの機能です)、実行するjavascriptが応答に含まれていると仮定します。Ajaxリクエストを送信する親ページにある場合は、完全なイベントに接続するのが最善の策です。(ここではクライアント側にパラメーターを入力しています)
$("#wrapperAwaitingContent").load("/Grids/MyGridPartial", {id: null /*parameters*/}, function(text, status, xhr){
//Javascript logic to fire goes here
});
私の場合、.load()
呼び出しで使用されるURLは、サーバー上のUrlHelperを使用して解決されます
$("#wrapperAwaitingContent").load("@Url.Action("MyGridPartial", "Grids")", {id: null /*parameters*/}, function(text, status, xhr){
//Javascript logic to fire goes here
});
Unobtrusive Ajaxを使用して、これと同様のことを行うオプションもあります。(ここではサーバー側にパラメーターを入力しています)
@Ajax.ActionLink("Load Data", "MyGridPartial", "Grids", new { id = null/*parameters*/ }, new AjaxOptions() { UpdateTargetId = "wrapperAwaitingContent", OnComplete="onCompleteMethodName" })
HTMLを受け取る要素と終了時に呼び出すメソッド以外にAjaxOptionsに設定できるプロパティは他にもありますが、共有JavaScriptファイルで定義された関数を再利用し、まだ入力されていない場合にのみ入力します。そこから、このようなもの...
$("a[data-ajax='true']").each(function () {
var ajaxUpdate = $(this).closest("data-ajax-container");
$(this).attr("data-ajax-update", $(this).attr("data-ajax-update") ? $(this).attr("data-ajax-update") : ajaxUpdate);
$(this).attr("data-ajax-mode", $(this).attr("data-ajax-mode") ? $(this).attr("data-ajax-mode") : "replace");
$(this).attr("data-ajax-success", $(this).attr("data-ajax-success") ? $(this).attr("data-ajax-success") : "AjaxSuccess");
$(this).attr("data-ajax-complete", $(this).attr("data-ajax-complete") ? $(this).attr("data-ajax-complete") : "AjaxComplete");
$(this).attr("data-ajax-failure", $(this).attr("data-ajax-error") ? $(this).attr("data-ajax-error") : "AjaxError");
});