0

我有一个像这样的模型:

public class Invoice
{
int Code{get;set;}
List<InvoiceItem> InvoiceItems{get;set;}
}

我在表格中填写 InvoiceItems,我希望在控制器中将表格项作为 InvoiceItems

  [HttpPost]
        public virtual ActionResult Create(Invoice model)
        {
           //Save Invoice
            return View();
        }

如何填写 InvoiceItems 并将其发送到控制器?

在此处输入图像描述

4

2 回答 2

1

你的 html 的结果应该是这样的

    <input type="text" name="Code" value=""/>
    ...
    <table>
        <thead>
            <tr>
                <th>#</th>
                <th>Name</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td><input type="hidden" name="InvoiceItems[0].Name" value="InvoiceItem1"/></td>
            </tr>
            <tr>
                <td>2</td>
                <td><input type="hidden" name="InvoiceItems[1].Name" value="InvoiceItem2"/></td>
            </tr>
            <tr>
                <td>3</td>
                <td><input type="hidden" name="InvoiceItems[2].Name" value="InvoiceItem3"/></td>
            </tr>
        </tbody>
    </table>
    <button type="submit">Submit</button>
</form>

这样您就可以使用纯表单提交或 ajax

// assuming you have only one form. otherwise use more specific selector
var $form = $("form");
var data = $form.serializeArray();
var url = $form.attr("href") || document.URL;
$.post(url, data, yourCallbackFunction);

其余的由 ModelBinder 完成。关键部分是维护InvoiceItems索引。它们必须从 0 开始并且是连续的。即 0,1,2,3 等。如果您跳过某些索引,modelbinder 将结束绑定您的列表,其中索引被破坏。

于 2013-05-27T14:51:14.927 回答
0

列表可以用准二维数组表示:

$arr = 
    array(
        array(
            {
                "key":"value",
                "key2":"value2"
            },
            {
                "key":"value",
                "key2":"value2"
            }
        ),
        array(
            {
                "key":"value",
                "key2":"value2"
            },
            {
                "key":"value",
                "key2":"value2"
            }
        )
    );

(json_encode)

可以读取,例如 $val = $arr["0"]["0"]["key2"];

这只是一个示例 > 使用和组合 Array-、Object- 和 Json-Syntax 以使您的列表符合您的需求。使用 json 非常方便,并且具有非常“来源”和面向对象的编码以及简单的数据处理。

ps:对我来说,您的问题似乎很不清楚,不知道您的目标是什么...

于 2013-05-26T17:50:43.530 回答