【问题标题】:Trigger the bundle inclusion from partial or editor templates in ASP.NET MVC 4从 ASP.NET MVC 4 中的部分或编辑器模板触发包包含
【发布时间】:2012-09-04 22:44:24
【问题描述】:

我正在 ASP.NET MVC 4 之上构建一个框架。我喜欢 MVC4 中的新捆绑功能,但我遇到了一个问题,我不确定新的捆绑功能是否能解决这种情况。

我的布局视图在页面底部 </body> 之前呈现它的脚本包。

由于我的项目是一个框架,视图并不知道页面需要的所有捆绑包。我的项目正在大量使用编辑器模板,可能需​​要包含一些 javascript,但无法在编辑器模板本身中呈现它,因为:

  • 脚本只需包含一次,编辑器模板可能会多次呈现。
  • 该脚本可能依赖于尚未包含的其他 javascript 库,例如 jQuery(它们在页面底部呈现)。

所以,我想做的是在编辑器模板中做这样的事情:

@Scripts.TriggerInclusion("~/path/to/bundle/that/this/editor/needs")

这将导致捆绑脚本标签仅在页面末尾呈现一次。

我可以不厌其烦地将它构建到我的项目的基础架构中,但我希望这种东西已经以某种方式得到支持。谢谢!

【问题讨论】:

    标签: asp.net .net asp.net-mvc-4 bundle asp.net-optimization


    【解决方案1】:

    我自己滚动。它很容易构建并且对我来说效果很好。

    https://github.com/ronnieoverby/MvcAssetManager/blob/master/MvcAssetManager/Infrastructure/AssetManager.cs

    可能存在一些错误,因为我的大部分项目仍然是 MVC3,所以我没有使用太多。但我用过的很少,它就成功了。

    【讨论】:

    • 既然我已经发布了我的代码,我们可以摆脱那票否决吗
    • 当然!你甚至可以得到一个漂亮而干净的解决方案。
    • 很好的解决方案,发现由于您无法控制顺序或脚本包含,您只需要从每个部分请求您需要的所有捆绑包。不敢相信这样的东西不是内置的
    • 谢谢。是的,这似乎是一个严重的疏忽。
    • 我只使用了 RequireBundle。请问包含单个脚本的语法是什么?
    【解决方案2】:

    这是我们在积压工作中跟踪的内容,它是一个相当复杂的功能,因此我们可能不会在几个版本中实现这一点。

    我们早期的想法基本上是:

    • 允许注册命名资产,即 Assets.Register("jquery").Include("~/scripts/jquery.js")
    • 允许在捆绑包中按名称包含资产
    • 添加类似于 Scripts.Requres("jquery") 的内容,类似于您的 TriggerInclusion,它基本上在页面上注册 jquery 资产。
    • Scripts.RenderRegistered() 之类的东西会在您选择的位置呈现您页面上所有已注册的脚本,并且还会对资产进行重复数据删除等。

    我们不确定这个功能的优先级有多高,所以如果这是你真正想要的东西,我在codeplex site here 上创建了一个问题,投票给它。

    【讨论】:

    • 还是这样吗?盒式磁带提供了这个,这是一个明确的奖励。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多