【问题标题】:How to store complex objects in jQuery / data attributes within Razor?如何在 Razor 中的 jQuery / 数据属性中存储复杂对象?
【发布时间】:2012-08-11 21:35:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您是否考虑过使用类似 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>
      }
      

      【讨论】:

      • -1,用户显然在使用 .Net MVC ......告诉他们使用 knockout.js 是愚蠢的,没有任何意义。他们需要解决这个问题。您是在建议他们改变整个架构。
      猜你喜欢
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多