渲染脚本以在局部视图中使用?
Posted
技术标签:
【中文标题】渲染脚本以在局部视图中使用?【英文标题】:Render scripts for use in Partial View? 【发布时间】:2013-06-21 18:35:46 【问题描述】:我看到许多消息来源指出将脚本放在部分视图中是不正确/不好的做法,但这引发了一个巨大的问题......
您应该如何运行与局部视图交互的脚本?我试过使用@section scripts
或类似的东西,但它不起作用。完全没有。该部分包含的脚本很好,但是当 Partial 加载到完整视图中时它们不会被渲染。
此外,我无法在完整视图上呈现部分视图所需的脚本,因为脚本从 Model
中提取值,而 Model
仅在部分视图上呈现,因为它实际上是拼图的一部分处理数据。
我希望这听起来不会太复杂...我怎样才能有效、高效和正确地渲染脚本以用于我的部分视图的元素和Model
?
【问题讨论】:
如果您知道某个视图将使用分部视图,只需为该分部视图创建一个 .js 文件并将其导入您的视图中。 【参考方案1】:@keyCrumbs 我不会给你一个直接的答案,但你可以分析一下。 为局部视图调用脚本的最大问题之一是代码的复制。
认为您将使用 ajax 来获取局部视图,并且您将继续这样做一段时间。在每次调用中,您都将下载脚本代码,并将其放入 html 中。每次重置 html 中的脚本块时,都会重置函数,重置变量。这可能是个大问题,具体取决于您的 js 代码。
另一点是响应的大小,你可以说,但是 js 的大小很小,我会说,每次用户调用都会乘以这个大小,然后再乘以连接的用户。
所以最后,为您提供一个解决方案,在这种情况下是:在页面中创建函数并在局部视图中调用该函数,如下所示:
您的页面:Page.cshtml
<script type="text/javascript">
function myPartialView_Load()
$("birth").datepicker();
$("phone").mask("000-0000");
</script>
<!-- Some other code here -->
<div>
<!-- Or you can call from a ajax or other way... -->
@Html.Action("MyActionPartialView")
</div>
您的局部视图:MyPartialView.cshtml
<script type="text/javascript">
$(function () myPartialView_Load(); );
</script>
<form>
<input type="text" name="birth" id="birth" />
<input type="text" name="phone" id="phone" />
</form>
因此,正如您所看到的,问题不在于将 js 置于局部视图中,而在于您执行此操作的方式。所有良好实践的规则背后都有一个“为什么”,如果您了解“为什么”,您可以确定该规则在多大程度上是帮助而不是负担。并决定是否打破它。
就像有人说的那样,我没有给你一个最终的答案,而是你关心的事情。您可以使用其他方法来解决问题。
【讨论】:
在布局中调用 jquery 之前渲染的局部视图中仍在使用 js。 @jonny 这和我的case 一样吗?在设置我的脚本库以在视图和部分视图上使用时遇到问题。我应该阅读任何文档或示例吗?以上是关于渲染脚本以在局部视图中使用?的主要内容,如果未能解决你的问题,请参考以下文章