2013-03-18 47 views
0

我正在使用骨幹js來處理我的視圖和模型,但是我希望在ASP.NET MVC中使用Html.EditorFor來呈現模板。這是因爲我的表單是基於C#類動態創建的。我只嘗試了JavaScript模板的下劃線,但它需要在此值域中標記,如<%=heading%>,這對我來說不是一種選擇。我需要一個模板引擎,它可以使用每個表單組件的名稱映射我的表單,或者是否有其他視圖引擎可以呈現相同的標記,以便同時適用於服務器和js模板引擎。基於名稱映射HTML表單的JavaScript模板引擎

UPDATE

在我看來,我使用Html.EditorFor是這樣的:

@foreach (var type in Html.GetAvailablePageModels()) { 
    var content = Activator.CreateInstance(type) as IContent; 
    <script id="[email protected]" type="text/html"> 
     @using (Html.BeginForm()) { 
      @Html.EditorFor(x => content) 
      <input type="submit" value="Save"/> 
     } 
    </script> 
} 

然後在我的骨幹鑑於我在做這樣的事情:

var PageModel = Backbone.Model.extend({ 
    urlRoot: '/api/page' 
}); 
var page = new PageModel({ id: 'articles/85' }); 
page.fetch(); 

var EditView = Backbone.View.extend({ 

    el: $('div#main'), 

    initialize: function() { 
     this.template = _.template($('#view-template-Article').html()); 
     this.render(); 
    }, 

    render: function() { 
     $(this.el).html(this.template(this.model.toJSON())); // <-- set the values correct in my pre rendered form 
     return this; 
    } 

}); 

window.editView = new EditView({ model: page }); 

在上面的代碼中,我將模型綁定到模板,我需要確保名爲heading的字段綁定到名稱爲「h」的正確表單域eading」。

+0

我會看看像Backbone.Stickit這樣的東西,因爲它看起來像你可能想要雙向綁定到模型? – WiredPrairie 2013-03-18 19:42:19

回答

1

變化的方式強調模板的工作:


_.templateSettings = { 
    interpolate : /\{\{([\s\S]+?)\}\}/g 
}; 

現在你可以寫HTML模板是這樣的:

This is a message: {{message}} 

,而不是老派<%= message %>風格。這將使您可以從服務器上的Razor視圖生成所需的模板。我曾在一個項目上做過這件事,結果非常好。

+0

這似乎很好!你如何讓你的Razor視圖呈現正確的HtmlFieldName?如果我在我的視圖中使用類似於的結果,則打印如下:但我的JSON包含不包含內容前綴。有沒有辦法自動刪除前綴或我需要手動執行此操作? – Marcus 2013-03-19 09:07:26

+0

老實說,我不記得了。這是一年前,我從來沒有工作W /。NET /剃鬚刀從那時起...對不起 – 2013-03-19 14:54:44

+0

好吧,我會開始一個新的問題。謝謝你的幫助! – Marcus 2013-03-19 17:21:04