这个问题是类似的,但没有结论和“否”的自我接受的答案:自动从 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 中创建复杂模型的最佳实践方法是什么。