渲染脚本以在局部视图中使用?

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 一样吗?在设置我的脚本库以在视图和部分视图上使用时遇到问题。我应该阅读任何文档或示例吗?

以上是关于渲染脚本以在局部视图中使用?的主要内容,如果未能解决你的问题,请参考以下文章

获取模型/对象以在 .Net Core 的局部视图中使用

在 ASP.NET MVC 中使用 jQuery 渲染局部视图

从另一个局部视图渲染局部视图

Sails js渲染局部视图

在另一个视图中渲染视图(不是局部视图)

MVC的局部视图