【问题标题】:MVC 3 jquery renderbody <=> Header(_layout)MVC 3 jquery renderbody <=> Header(_layout)
【发布时间】:2012-02-07 10:56:39
【问题描述】:

所以这是我的问题: 我的 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>

但是只有我的默认视图可以使用这些脚本,当我进入另一个视图(在渲染体中)并且我需要使用一些 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)

谢谢

【问题讨论】:

  • 你能告诉我们更多的_Layout文件吗?由于您使用的是名为“header”的部分,因此我想看看您在布局中实现该部分的位置。

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


【解决方案1】:

我发现了我的问题:

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

  2. 我使用 (jcarousel.js) 的一个脚本未正确设置( initCallback 参数)。

谢谢大家;)

【讨论】:

    【解决方案2】:

    由于您没有在视图中指定布局,因此您可以尝试两件事。

    确保您的“默认”布局在"~Views/_ViewStart.cshtml" 中正确配置:

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

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

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

    【讨论】:

    • 我认为您不需要使用 MVC 3 和 @razor 视图引擎设置此参数。我尝试按照您的建议强制执行此设置,但仍然无效。
    • 只有当你有一个 _ViewStart 布局设置时,你才需要做一个布局参考。但是,如果您明确设置包含脚本的布局视图并且它没有出现在您的视图中,那么您的项目的结构就会出现问题。您的项目中的视图是如何构成的?它们位于何处?
    • 我的 ViewStart 布局设置为显示所有视图的 _Layout 视图(在 renderBody() 内)。问题是当我在我的 mvc 应用程序中导航时可以看到我的 _layout(我看到我的菜单、页脚、
      、...)这就是我迷失的地方,因为如果我让我的浏览器显示我的源代码,它会找到一切(js,css文件)但它不能执行任何jquery“函数”,就像他找不到jquery文件一样,但它适用于我的一个视图,那就是它?
      ?为什么!?!
    猜你喜欢
    • 2018-01-27
    • 1970-01-01
    • 2011-10-28
    • 2014-05-30
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2015-03-18
    相关资源
    最近更新 更多