【问题标题】:Building a form from json从 json 构建表单
【发布时间】:2011-08-24 17:31:14
【问题描述】:

我正在使用 jquery+json 从我的控制器中获取一组视图模型。然后我构建了一个表格,其中表格中的每一行代表一个视图模型。

我的问题是:我应该如何命名每个表单元素,以便我可以将它用于我的控制器操作,如下所示:

public ActionResult Update(MyViewModel[] models)
{
}

编辑:我正在使用 jquery-tmpl 生成表单,并且我也在尝试弄清楚如何在其中获取索引变量(如果生成表单需要的话)。

【问题讨论】:

    标签: asp.net-mvc forms model-binding


    【解决方案1】:

    我设法让它工作。

    我的 jquery 模板:

    <script id="wagonTemplate" type="text/x-jquery-tmpl">
        <tr>
            <td>
                <input type="checkbox" value="true" class="wagoncheck" name="wagons[${$item.getIndex()}].IsSelected" />
            </td>
            <td>
                <input type="text" name="wagons[${$item.getIndex()}].WagonId" value="${WagonId}" style="width:120px" />
            </td> 
            <td>
                <input type="text" name="wagons[${$item.getIndex()}].WagonNumber" value="${WagonNumber}" style="width:20px" />
            </td> 
    </script>
    

    加载模板的方法:

    function loadWagons(trainId, partId) {
        $.getJSON('/train/wagons/' + escape(trainId) + '?partNo=' + partId, function (data) {
            $wagons = $('#wagons tbody');
            $wagons.empty();
    
            // the function used in the template to get an index.
            var tmplOptions = {
                getIndex: function getIndex() {
                    return $.inArray(this.data, data);
                }
            };
            $("#wagonTemplate").tmpl(data, tmplOptions).appendTo($wagons);
        });
    }
    

    换句话说:

    要在控制器操作中获取 YourModel[] items 参数,您需要将项目命名为 items[0].MyProperty' where0` 应该对应于数组中的索引。

    要在 jquery 模板中获取索引,只需将选项中的方法传递给模板函数。我正在使用here 找到的答案的略微修改版本。没有必要按照该答案中的方式传递该项目,因为this 指向当前项目。

    【讨论】:

      猜你喜欢
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 2015-08-31
      • 1970-01-01
      • 2012-11-10
      相关资源
      最近更新 更多