渲染脚本以在Partial View中使用?

时间:2013-06-21 18:35:46

标签: asp.net-mvc scripting views

我看到很多消息来源说将脚本放在部分视图中是不正确/不好的做法,但这提出了一个很大的问题......

您应该如何运行与部分视图交互的脚本?我尝试使用@section scripts { }或类似的东西,但它不起作用。完全没有。该部分包含的脚本很好,但是当部分加载到完整视图时它们不会被渲染。

此外,我无法在我的完整视图中呈现我的部分视图所需的脚本,因为脚本从Model中提取值,该值仅在部分视图上呈现,因为它是拼图的一部分这实际上适用于数据。

我希望这听起来不太复杂......我怎样才能有效,高效,正确地渲染脚本,以便与我的Partial View的元素 Model一起使用?

1 个答案:

答案 0 :(得分:4)

@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放在局部视图中,而是在你这样做的时候。所有良好实践规则都有“为什么”落后,如果你理解“为什么”你可以确定规则是多大的帮助而不是负担。决定是否打破它。

就像说的那样,我没有给你一个最终的答案,但你不管怎么说。您可以使用其他方法来解决问题。