基于url路由mvc 3的脚本标记的条件更改

时间:2012-10-20 18:11:03

标签: 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路由更改时的脚本标记,如上所述?

1 个答案:

答案 0 :(得分:2)

我只是为此使用一节。在布局页面中:

@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>
}

然后脚本块将输出到定义RequireScript的页面。

@{
    Page.RequireScript = "Libs/Requirejs/require.min.js";
}