【发布时间】:2019-07-12 08:26:43
【问题描述】:
我为我非常糟糕的术语道歉,
但我会尝试更好地解释自己:
给出一个包含 obj 列表和一个 obj 的模型
我希望在我的视图中有一个表单将 obj(和列表)发送到控制器
-
控制器将 obj 添加到更新列表并将其发送回视图。
我的问题是将“初始”列表传递给提交时的表单;
这不起作用:
<div class="form-group">
@Html.HiddenFor(m => m.RequestList, Model.RequestList)
</div>
编辑:回答...
这个问题在这里可能已经有了答案:
型号 Model Binding to a List MVC 4 3 个答案
不,不是, 我不是要编辑列表,而不仅仅是“声明”, 无论如何,正如建议的那样,我正在尝试循环列表中的元素并“将其添加到新元素中”;
-
有些东西实际上被传递给了模型,但是是空的!
for (int i = 0; i < Model.RequestList.Count(); ++i) { @Html.HiddenFor(m => m.RequestList[i], new { StartTime = Model.RequestList[i].StartTime, EndTime = Model.RequestList[i].EndTime, StatusId = Model.RequestList[i].StatusId, }) }再次:我做错了什么?
- 我认为this solution 实际上更接近我的意思(抱歉不是stackoverflow)
但是尝试这样的事情
@using (Html.BeginForm("CreateComplex", null, FormMethod.Post, new { @class = "", RequestList = Model.RequestList}))
还是不行
【问题讨论】:
-
简而言之,您将需要一个
for循环,然后为要绑定的列表项的每个属性呈现隐藏的输入。也许将新项目添加到数据库中的列表中,然后从后端重新加载整个列表而不是使用 POST 往返它会更容易?这样,您只需要 POST 必须添加的新项目的 ID。 -
更新了主帖,有些东西通过了,但它是空的,可能我做错了;出于好奇,由于我的目标不是修改视图中的列表,有没有办法将其“传递”给新模型而无需循环?
-
关于要发布的
null:您的代码应该是for (int i = 0; i < Model.RequestList.Count(); ++i) { @Html.HiddenFor(m => m.RequestList[i].StartTime) @Html.HiddenFor(m => m.RequestList[i].EndTime) @Html.HiddenFor(m => m.RequestList[i].StatusId) },即您要发布的模型的每个属性都有一个@Html.HiddenFor。