2012-10-13 34 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