【问题标题】:Can't render section with script in a partial view in Razor无法在 Razor 的局部视图中使用脚本渲染部分
【发布时间】:2016-01-02 17:54:06
【问题描述】:

我看到了cool gadget,我想在我的页面上使用它。我选择了所有选项,他们生成了一个我应该从我的站点执行的 JS。

由于我使用的是 Razor,因此我需要将其渲染为一个部分,因此我添加了一个。但是,当我尝试渲染它时,我收到错误消息告诉我:

无法直接请求文件“~/Views/Home/EyeCandy.cshtml”,因为它调用了“RenderSection”方法。

所以我在谷歌上搜索并找到了一堆解释如何解决它的文章。最好的(几个小时后)是this particular reply。但是,我就是无法绕开它而感到困惑。

@{ Layout = "~/Views/Shared/_Default.cshtml"; }
@model List<Donkey>
<h1>List of the eye candies.</h1>

@RenderSection("Footie", false)
@section Footie { <script src="@Url.Content("...")" 
                   async="async" 
                   type="text/javascript"></script> }

在链接的回复中,有三个文件。

  1. _PartialScripts.cshtml,我没有,需要从我的部分 Footie 中的脚本标记添加填充它。
  2. _Partial.cshtml,这是我当前的视图,名为 EyeCandy.cshtml
  3. 我理解的未命名代码 sn-p 对应于我的 _Default.cshtml 布局。

现在,在我看来,这没有任何意义,因为关键是将脚本排除在布局之外,并将其范围限制在我测试眼睛糖果的一个视图中。我敢肯定,在这个阶段我太慢了,但如果有人,非常漂亮,请指出我误解了什么,我会很高兴的。

【问题讨论】:

    标签: javascript c# asp.net-mvc razor


    【解决方案1】:

    您需要在布局中调用@RenderSection("Footie", false),而不是在特定视图中。

    所以将此添加到您的~/Views/Shared/_Default.cshtml

    @RenderSection("Footie", false)
    

    并且在您的特定视图中,您可以执行您的自定义代码,该代码包含在 Footie section

    @section Footie { 
      <script src="@Url.Content("...")" async="async" type="text/javascript"></script> 
    }
    

    【讨论】:

    • 好的。所以渲染就在 body 的末尾上方,而 section 声明位于底部的视图中。当我运行脚本时说 alert("Shyju awesome"); 它会显示,所以我猜这个问题已经回答了。现在,当我尝试对全球脚本执行相同操作时,屏幕上什么也没有,但在 FF 中粘贴的 URL 实际上为我提供了一个功能。这是你看到的明显的东西吗?如果没有,我会提出另一个问题。这个肯定已经回答了。
    • 我发布了您其他问题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2012-01-09
    相关资源
    最近更新 更多