1

我对 Asp.Net MVC 4 中的新捆绑机制有疑问。似乎默认捆绑仅支持对 JS\CSS 的处理。但它不支持jQuery 模板(组合和编译为 JS 代码)。

我发现Cassette以很好的方式支持它 - http://getcassette.net/documentation/v2/html-templates/jquery-tmpl。Cassette 可以将模板编译成 javascript 文件以减少客户端工作。但是我在内置捆绑中找不到类似的功能。

我知道,存在允许自定义它的 IBundleTransform 接口。但是是否已经存在允许在服务器端编译 jQuery 模板的 BundleTransform 扩展?

4

2 回答 2

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")
于 2014-04-10T15:47:56.793 回答
2

这里提供了一个选项:

http://samarskyy.blogspot.com/2012/03/loading-external-jquery-template-files.html

于 2012-10-13T23:24:52.653 回答