是在基本布局/模板视图中加载所有资源,还是直接在ajax中加载的部分视图中加载资源?
示例:
_布局:

[...]

    <head>
        <script src="file.js"></script>
        <link href="file.css"></link >
    </head>

[...]

或者
_布局:
[...]

    <head>
    </head>

[...]

partialView(稍后在AJAX中加载):
<div>
    <script src="file.js"></script>
    <link href="file.css"></link >
</div>

最佳答案

您通常要做的是将一些脚本资源推送到viewbag上的列表中,然后让您的模板遍历该列表并为您生成脚本include。
部分:

@{
    ViewBag.ScriptIncludes = ViewBag.ScriptIncludes ?? new List<string>();
    ViewBag.ScriptIncludes.add("script1.js");
}

在布局中(_layout.cshtml)
@if (ViewBag.ScriptIncludes != null)
{
    foreach (string url in ViewBag.ScriptIncludes)
    {
        <script src="@url" type="text/javascript"></script>
    }
}

在正常情况下,这允许您将脚本与部分很好地关联起来,如果您只刷新页面加载中页面上存在的部分,则是一个好主意。
脚本应该预先加载到页面上。不应该通过ajax获取脚本资源并将其注入页面来重新加载脚本。理想情况下,您也不会通过ajax获得html,但有些人认为这是可以接受的。您只想将html注入到页面中,而不想插入更多脚本。如果在部分视图中的项上有事件处理程序,请考虑将事件处理程序附加到容器,而不是单独附加元素。
但是,考虑到您可能正在重新加载任何视图,我认为最好将脚本包含在头部。这将确保以后不会发现任何冲突脚本。您的站点本质上是一个应用程序,最初加载时会给用户带来少量开销,但不需要刷新。

08-27 22:12
查看更多