2

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

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

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

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

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

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

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

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

4

2 回答 2

8

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

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

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

于 2012-10-16T18:00:50.727 回答
3

这是我们在积压工作中跟踪的内容,它是一个相当复杂的功能,所以我们可能不会在几个版本中使用它。

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

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

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

于 2012-09-11T23:47:30.253 回答