如果这是你在上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函数,以便我可以运行一些客户端代码来对该模型执行操作,但是我所做的每一次尝试都严重失败。 –