【发布时间】:2013-01-28 03:03:52
【问题描述】:
在 ASP.NET MVC 中,在通过 Ajax 加载的局部视图上运行 Javascript 的首选模式是什么?
例如,假设您需要在局部视图中连接一些点击事件。
当然,在分部视图中放置这样的内容是行不通的,因为在分部视图加载 Ajax 后不会触发文档就绪事件。
<script type="text/javascript">
$(function() {
$("a.foo").click(function() {
foo();
return false;
});
});
</script>
我想这样的事情可能会奏效,但它安全吗?
<script type="text/javascript">
$("a.foo").click(function() {
foo();
return false;
});
</script>
我一直使用的模式是在加载部分后从我的父视图运行任何 Javascript,如下所示:
$.get(url, function(html) {
$("#partialDiv").html(html);
// Now that the partial has loaded...
RegisterClicks();
});
但我一直在研究 this 示例,并注意到他们只是将点击注册代码内嵌在局部视图中。
这是一种普遍安全的模式吗?如何确保在我的脚本运行之前部分视图的 DOM 已完成加载?
【问题讨论】:
-
要么我做你的第二个例子,没有问题,但我避免它,因为如果部分重复,那么 javascript 会不必要地重复并且也不会被缩小。相反,我将 javascript 放在外部 *.js 文件中,并且父页面必须包含它(因此,如果父页面通过捆绑/缩小框架包含它会被缩小)。我希望 Partials 有某种 OnLoadJavascript 或受支持的部分,但不幸的是他们没有。
-
@AaronLS,如果我可以问,作为风格问题,你会为每个部分有一个单独的 js 文件吗?还是一个包含所有部分代码的 js 文件?
-
@Eric 通常每个部分一个,但有时我有一个像“_AccountManager.cshtml”这样的部分页面,它反过来使用一些其他的子 ajax 部分,比如“_AccountTypeSelector.cshtml”作为交互部分页。由于这组部分总是在 _AccountManager.cshtml 下一起使用,我将有一个 AccountManager.js 来保存那些密切相关的部分的所有 JavaScript 代码。
标签: javascript asp.net-mvc partial-views asp.net-mvc-partialview