我对Asp.Net MVC 4中的新Bundling机制有疑问。看起来默认Bundling只支持JS \ CSS的处理。但它不支持jQuery template(组合和编译为JS代码)。
我发现Cassette以很好的方式支持它 - http://getcassette.net/documentation/v2/html-templates/jquery-tmpl。 Cassette可以将模板编译成javascript文件以减少客户端工作。但我在buildin捆绑中找不到类似的功能。
我知道,存在允许自定义它的IBundleTransform接口。但是,是否已经存在允许在服务器端编译jQuery模板的BundleTransform扩展?
答案 0 :(得分:4)
这是我用于车把模板
的原因模板示例:位于〜/ Templates / template123.html
中的文件<script id="template123" type="text/html">
<div>someTemplate</div>
</script>
在BundleConfig中:
bundles.Add(new Bundle("~/templates/handlebars").IncludeDirectory("~/Templates", "*.html", true));
添加了以下RazorExtension:
public static class RazorExtensions
{
public static IHtmlString RenderTemplates(this HtmlHelper htmlHelper, string src)
{
var context = htmlHelper.ViewContext.HttpContext;
if (string.IsNullOrEmpty(src) || context == null || context.Request.Url == null)
{
return null;
}
using (WebClient Client = new WebClient())
{
var request = context.Request;
var url = request.Url.Scheme + "://" + request.Url.Authority + Scripts.Url(src).ToHtmlString();
var content = Client.DownloadString(url);
return new MvcHtmlString(content);
}
}
}
在我的剃刀页面上:
@Html.RenderTemplates("~/templates/handlebars")
答案 1 :(得分:2)