この質問は似ていますが、結論がなく、「いいえ」という自己受容的な答えがあります。c#オブジェクトからjavascriptオブジェクトモデルを自動的に生成します。
Darinによるこの回答は、オブジェクトをJsonにマッピングする非常に良い例ですが、複雑なモデルで機能するかどうかはわかりません:https ://stackoverflow.com/a/9007578/1026459
これが私が見ていたものの例です。この設定を考えると:
ビューモデル:
public class Avm
{
public int id { get; set; }
public string name { get; set; }
public Foo Foo { get; set; }
}
public class Foo
{
public int id { get; set; }
public string description { get; set; }
public List<Bar> Bars { get; set; }
}
public class Bar
{
public int id { get; set; }
public string metal { get; set; }
}
このオブジェクトモデルを定義するための可能な方法はありますか?
javascriptオブジェクトモデル:
<script>
var Avm = {};
Avm.id = @(Model.id);
Avm.name = "@(Model.name)";
Avm.Foo = {};
Avm.Foo.id = @(Model.Foo.id);
Avm.Foo.description = "@(Model.Foo.description)";
Avm.Foo.Bars = [];
var Bar = function(){
return
{
id : var id,
metal : var metal;
};
}
var Bar0 = new Bar();
Bar0.id = @(Model.Foo.Bars[0].id);
Bar0.metal = "@(Model.Foo.Bars[0].metal)";
Avm.Foo.Bars.push(Bar0);
//and so on for each Bar.
</script>
手ですべてを入力するよりも正確な方法で?
または、おそらくヘルパーのある種の反省を通して、
<script>
@Html.GenerateJsObjectModel(Model)
<script>
ヘルパーメソッドを呼び出す
public static void GenerateJsObjectModel(
this HtmlHelper html, dynamic model)
{
html.ViewContext.Writer.Write("var Avm = {};");
html.ViewContext.Writer.Write("Avm.id = " + model.id + ");");
//etc. (except obviously more generic instead of specific)
}
これはフレームワークにすでに存在しますか?ここでは、JSONのようなシリアル化プロセスを使用する方が優れているでしょうか。その場合、このシナリオでJSONを結び付けるためにどのタイプのフックを使用しますか?
ビューモデルに基づいてJavaScriptで複雑なモデルを作成するためのベストプラクティスのアプローチは何ですか。