如果這是你在上serverthen Dave的方法,將工作最好的視圖渲染PartialView。只需將代碼連接到DOM就緒事件。
$(document).ready(function(){
//Javascript logic to fire goes here
});
,或者如果你prever簡寫版...
$(function(){
//Javascript logic to fire goes here
});
如果你渲染正在通過Ajax調用,那麼同樣的方法,將工作的局部視圖。如果我記得正確的話,jQuery將在通過Ajax傳遞迴客戶端的HTML中運行javascript(如果我正確記得,jQuery將在運行時將javascript傳遞給客戶端(請隨時測試此內容,我將通過內存關於一旦連接到DOM時觸發它,但我相信是load()
方法的一個特性),假設你想運行的JavaScript是在響應中。如果它在發送Ajax請求的父頁面中,那麼最好的辦法就是將它連接到完整的事件。(我在這裏填充在客戶端的參數)
$("#wrapperAwaitingContent").load("/Grids/MyGridPartial", {id: null /*parameters*/}, function(text, status, xhr){
//Javascript logic to fire goes here
});
對我來說,在調用中使用的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");
});
您的意思是「在HTML的一半呈現時運行JavaScript服務器? 「 –
基本上,我需要在局部視圖渲染後訪問由客戶端上的局部視圖提供的數據(模型)。我嘗試了很多方法來啓動一個javascript函數,以便我可以運行一些客戶端代碼來對該模型執行操作,但是我所做的每一次嘗試都嚴重失敗。 –