如何在Razor中的jQuery / data属性中存储复杂对象?

时间:2012-08-11 13:07:36

标签: javascript jquery asp.net-mvc razor custom-data-attribute

在我的Razor标记中,我循环遍历模型集合并输出表格行。目前,我将项目ID存储在每个表行的“data-id”属性中。我需要每行存储整个对象,所以它将为我节省一些未来的ajax调用。什么是在Razor输出上每行存储完整对象以供我的jQuery稍后使用的好方法?

2 个答案:

答案 0 :(得分:1)

您还可以使用具有编码的json String的隐藏字段,然后您可以在javascript代码中按需解析jSon。根据您的要求,每行都有一个隐藏字段。

@foreach(var item in Model.Whatever) {
 <tr data-id="@item.Id"> ... etc </tr>
 <input type="hidden" val="@Json(model)" />
}

答案 1 :(得分:0)

您是否考虑使用Knockout.js或任何其他基于模型的模板Javascript语言(有很多,包括Backbone,Angular等)?您可以简单地将整个模型绑定到Javascript(将其序列化为JSON)。然后,您可以使用模板生成表。这是我能给你的最佳建议。

如果你想要快速/黑客的方式,你总是可以这样做:

<script>
var dataMap = {};
</script>

@foreach(var item in Model.Whatever) {
 <tr data-id="@item.Id"> ... etc </tr>
 <script>
dataMap['@item.Id'] = @Json(item); // you'd have to make a Html helper to do this
</script>
}