我正在为我的混合应用程序使用 requireJS 。现在我需要根据 url 的条件更改位于布局页面中的脚本标记。脚本标签看起来像这样
<script data-main="@Url.Content("~/Scripts/main")" src="@Url.Content("~/Scripts/Libs/Requirejs/require.min.js")" type="text/javascript"></script>
现在,当页面加载 /Home/Login
时,上面的脚本标记应更改为
<script data-main="@Url.Content("~/Scripts/login")" src="@Url.Content("~/Scripts/Libs/Requirejs/require.min.js")" type="text/javascript"></script>
再次加载页面时 /Mail/Index
上面的脚本标记应更改为
<script data-main="@Url.Content("~/Scripts/mail")" src="@Url.Content("~/Scripts/Libs/Requirejs/require.min.js")" type="text/javascript"></script>
现在请注意,所有三个页面都使用相同的 **_Layout.cshtml**
页面。上面的脚本标签仅位于 **_Layout.cshtml**
页面中。现在如何跟踪此脚本以在如上所述的 Url 路由更改时更改脚本标签?
最佳答案
我只是为此使用一个部分。在布局页面中:
@RenderSection("RequireScripts")
并将脚本放在每个页面中:
@section RequireScripts {
<script data-main="@Url.Content("~/Scripts/main")" src="@Url.Content("~/Scripts/Libs/Requirejs/require.min.js")" type="text/javascript"></script>
}
如果您正在寻找一种避免重写整个内容的方法(仅需要相对路径),那么我想您可以使用动态 Page
变量:
@if (Page.RequireScript != null)
{
<script src='~/Scripts/@Page.RequireScript'></script>
}
然后脚本 block 将输出到定义 RequireScript
的页面。
@{
Page.RequireScript = "Libs/Requirejs/require.min.js";
}
关于javascript - 基于url路由mvc 3的脚本标签的条件改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991283/