如何在视图中的脚本部分中包含脚本包

bfl*_*mi3 34 asp.net-mvc asp.net-mvc-4

我有一个带有一个@RenderSection("scripts")部分的布局,我有一个捆绑包需要包含在本节中的某些视图中.我认为在视图中执行此操作会起作用,但它不会渲染脚本.

@section scripts {
    @Scripts.Render("~/bundles/myBundle")  
}
Run Code Online (Sandbox Code Playgroud)

在我看来,如何在脚本部分包含一个包?

布局

@Scripts.Render("~/bundles/jquery", "~/bundles/scripts")
@RenderSection("scripts", required: false)
Run Code Online (Sandbox Code Playgroud)

视图

@section scripts {
    @Scripts.Render("~/bundles/movie")  
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*ath 37

View中尝试下面提到的解决方案.

视图

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/movie")"></script>
}
Run Code Online (Sandbox Code Playgroud)

  • @Dementic为什么不把你自己的答案呢? (2认同)

Yog*_*raj 17

为什么要将渲染与捆绑混合?如果您选择沿着捆绑的路线,您可以简单地将您的脚本放在.JS文件中,如果您愿意,可以将它放在自己的捆绑包中,并在您的视图上调用该捆绑包.例如:

     bundles.Add(new ScriptBundle("~/bundles/myscripts").Include(
                    "~/Scripts/myscript1.js",
                    "~/Scripts/myscript2.js")); 
Run Code Online (Sandbox Code Playgroud)

然后查看将有以下内容:

    @Scripts.Render("~/bundles/myscripts")   
Run Code Online (Sandbox Code Playgroud)

还要确保您的Web.config将编译调试设置为false,如下所示:

  <compilation debug="false" />            
Run Code Online (Sandbox Code Playgroud)

它确保脚本捆绑和缩小.

更新

根据评论和我最近的经验,我可以看到为什么我们要将两者结合使用.完美的社区学习案例!:)所以,如果你决定回来进行重构,我会确保没有开头的拼写错误.如果仍然无效,请告诉我问题是什么,我会相应地更新答案.感谢大家!

  • 您可能不希望在每个页面上呈现所有内容.切片可以让你控制它.把所有东西都放在头上是一个可怕的解决方案(jQuery可能是一个例外). (4认同)