MVC 3 jquery renderbody< =>报头(_layout)

时间:2012-02-07 10:56:39

标签: jquery asp.net-mvc asp.net-mvc-3 header

所以这是我的问题: 我在我的MVC 3项目中包含了我的所有js脚本的布局:

<link runat="server" rel="shortcut icon" href="@Url.Content("~/Content/favicone/favicon.ico")" type="image/x-icon"/>
<link runat="server" rel="icon" href="@Url.Content("~/Content/favicone/favicon.ico")" type="image/ico"/>
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.jcarousel.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.dimension.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.cookie.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/cultures/globalize.culture." + CurriculumVitae.Helpers.CultureHelper.GetCurrentCulture() + ".js")" type="text/javascript"></script>

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.17.custom.min.js")" type="text/javascript"></script>
<script type="text/javascript">
    function mycarousel_initCallback(carousel) {....}</script>

但是只有我的默认View可以使用这些脚本,当我进入另一个视图(在renderbody中)并且我需要使用一些jquery时我需要重新实现脚本以使其工作:

@{ViewBag.Title = "Index";}
@section header{
    <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.17.custom.min.js")" type="text/javascript"></script>
    <script>
        $.fx.speeds._default = 1000;
        $(function () {
            $("#dialog").dialog({
                autoOpen: true,
                show: "blind",
                hide: "explode"
            });
            $("#opener").click(function () {
                $("#dialog").dialog("open");
                return false;
            });
        });
 </script>
}

<a id="opener" href="javascript:void();">test </a>
<div id="dialog" title="Basic modal dialog">
    <p>terst nmsdfnms dfds fsd f JQUERYYYYYYYYYYYYYY</p>
</div>

这只是一个开始......我的主题/文化还有其他问题..

事情是在我的网页的源代码中,我找到了来自_layout(和“视图”)的所有脚本,但没有@section标题,即使是简单的js调用也不会起作用,如果它必须使用我的标题中的脚本(_layout)

谢谢

2 个答案:

答案 0 :(得分:1)

我发现了我的问题:

  1. 永远不要在同一个网站中重新实现或覆盖jquery-1.7.1.min.js 因为它会在每个jquery调用之间产生冲突。

  2. 我的一个使用(jcarousel.js)的脚本没有正确设置( initCallback param)。

  3. 谢谢大家;)

答案 1 :(得分:0)

由于您未在视图中指定布局,因此您可以尝试两种方法。

确保在"~Views/_ViewStart.cshtml"

中正确配置了“默认”布局
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

您可以在视图中明确设置所需的布局:

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}