2012-10-13 41 views
1

我有一个关于Asp.Net MVC 4中的新绑定机制的问题。似乎默认绑定只支持JS \ CSS的处理。但它不支持jQuery template(作为JS代码组合和编译)。绑定在Asp.Net MVC4和jQuery模板

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

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

回答

4

这是我用我的车把模板

模板示例:位于〜/模板/ template123.html

<script id="template123" type="text/html"> 
    <div>someTemplate</div> 
</script> 
文件

In 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") 
+0

看起来不错,但它与第二个答案非常相似。它结合并注入页面。但它不会像我在问题中提到的那样将html模板转换为纯JavaScript代码。因为无论如何,这些模板将被解析为JavaScript,所以那时我想找到方法如何以简单的方式做到这一点 –

+0

Dude,+1我喜欢这个答案。我感觉很干净。 – Joe