@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 置于局部视图中,而在于您执行此操作的方式。所有良好实践的规则背后都有一个“为什么”,如果您了解“为什么”,您可以确定该规则在多大程度上是帮助而不是负担。并决定是否打破它。
就像有人说的那样,我没有给你一个最终的答案,而是你关心的事情。您可以使用其他方法来解决问题。