【问题标题】:When I have to use @section scripts?我什么时候必须使用@section 脚本?
【发布时间】:2016-10-22 07:55:48
【问题描述】:

我当前的结构有一个带有页眉、正文和页脚的布局。在主体内部使用 ajax 加载视图以调用返回 Json 并绘制树视图的动作控制器。当用户单击树视图时,页脚应加载详细信息。但不起作用,我猜是因为脚本部分没有正确呈现。

现在脚本在没有包或任何东西的布局中,并且在主体上工作正常,因为我使用 Jquery 和树来加载 Json 数据。

但在部分视图中出现错误。我可以写一个@section scripts 区域并从部分视图的布局中复制所有脚本,但我为什么要复制代码?

最糟糕的部分只是在生产环境中给我带来问题......在我的开发环境中工作正常。

所以问题:

  • 为什么主视图可以看到布局上定义的脚本,而部分视图却看不到?

  • 为什么我的开发环境可以正常工作,而制作却不行?

  • 我应该怎么做才能解决这个问题?

编辑:更多测试。

这是一个测试视图,这个渲染在 Body 中。但我需要包含脚本部分,否则对话框不会显示,即使布局也有脚本。

@{
    ViewBag.Title = "TreeDetails";    
}
<html>
<head>
    <title>@ViewBag.Title</title>
</head>
<body>
    <h2>TEST PAGE</h2>

    <script>

        // Your code goes here.
        $(document).ready(function () {
            console.log("before dialog");
            $("#dialog").dialog();
            console.log("after dialog");
        })
    </script>

    <div id="dialog" title="Basic dialog">
        <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
    </div>

</body>
</html>

@section scripts {
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
}

【问题讨论】:

  • 您的treeview 脚本是否也在布局中加载?是使用@scripts 部分还是仅使用常规&lt;script&gt; 标签完成的?根据我对 mvc 中的 Sections 的经验,它只是一个将被部分内容替换的内容。但是,您需要小心,因为 js 加载是顺序的(在页面引用它们时加载)......所以在最终的 HTML 中,如果你的 treeview 脚本是在你实际使用它之后呈现的......你会得到这个错误。尝试移动您的 @scripts 部分声明或在主布局中加载您的脚本。可以发一些代码吗?
  • @DavidEspino 我还没有@script 部分。我的布局的头部只有脚本标签,其中包括 jquery.js。 Body View 有一个脚本加载树视图,但 jstree.js 也在布局中声明。脚部分有一些jquery.tabs,有哪里失败了。
  • Ok more info... 何时发生错误?是在加载吗?每当您单击某些内容时?...您可以粘贴有关如何呈现脚本的顺序吗? dialog 似乎是未定义的,也许是 jquery.ui 函数?加载页面时是否已在输出 html 中声明?
  • @DavidEspino 我包含一个 View 示例。在这里我需要包含 script.section 否则对话框不会显示。这直接渲染到正文中,不使用 PartialView。
  • 您可以尝试将@section 脚本上的这些脚本作为常规&lt;script&gt; 移动到布局中吗?我相信您的@scripts 部分是在布局中的@body 之后呈现的。您不想使用此部分来使用像jquery ui 这样的基本脚本,通常此部分用于注入当前部分的行为。例如...您的视图是 TreeDetails.cshtml,并且您有一个非常具体的客户端脚本行为,称为 treedetails.js。这是@scripts 部分的好候选。

标签: javascript jquery asp.net-mvc


【解决方案1】:

由于无法识别的 jquery 函数,这似乎是一个运行时错误。尝试将您的链接引用从布局标题中的视图@section 区域移动到 jquery。..

【讨论】:

    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2014-11-08
    • 2013-10-23
    • 1970-01-01
    • 2011-03-18
    • 2012-04-26
    相关资源
    最近更新 更多