ビューとモデルを処理するためにバックボーン js を使用していますが、ASP.NET MVC で Html.EditorFor を使用してテンプレートをレンダリングしたいと考えています。これは、フォームが C# クラスに基づいて動的に作成されるためです。JavaScript テンプレートのアンダースコアのみを試しましたが、このような値フィールドにマークアップが必要であり、<%=heading%>
それは私にとってオプションではありません。各フォーム コンポーネントの名前を使用してフォームをマップできるテンプレート エンジンが必要です。または、サーバーと js テンプレート エンジンの両方で機能する同じマークアップをレンダリングできる他のビュー エンジンが必要です。
アップデート
私の見解では、次のように Html.EditorFor を使用しています。
@foreach (var type in Html.GetAvailablePageModels()) {
var content = Activator.CreateInstance(type) as IContent;
<script id="view-template-@type.Name" 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 というフィールドが name="heading" の正しいフォーム フィールドにバインドされていることを確認する必要があります。