javascript - 基于url路由mvc 3的脚本标签的条件改变

标签 javascript asp.net-mvc-3 asp.net-mvc-routing requirejs

我正在为我的混合应用程序使用 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/

相关文章:

javascript 解析括号

c# - ValidationMessageFor 与 AddModelError(key, message) 一起。关键是什么?

c# - 无法绑定(bind)到参数

javascript - 使用 jQuery 滚动拖动页面

javascript - 如何禁止点击弹出窗口退出?

javascript - ExtJS 4 组合框在表单绑定(bind)上显示 valueField 而不是 displayField

c# - Ajax 调用在第二次尝试后返回未定义的数据

asp.net-mvc-3 - MVC3 将附加数据从 ctrl 传递到 View

asp.net-mvc - Url.RouteUrl 返回 null

c# - MVC 6 路由,SPA 回退 + 404 错误页面