我在这里看到了几个非常相似的帖子,关于迭代模型列表并在每次迭代中创建一个表单,但没有任何东西让我成功回复填充的模型。
我的目标是为模型的每次迭代提供一个内联表单,并允许用户在提交相关表单时进行更改并保存该特定模型的编辑。我仍然是ASP.NET MVC的新手,所以如果有更好的方法,请随时提供建议。
提前感谢您对此的任何帮助!
查看
return
控制器
@model List<POSGuys.Option>
@{
var options = Model.OrderBy(i => i.OptionEndOfLife).ToList();
}
@for (int i = 0; i < options.Count(); i++)
{
using (Html.BeginForm("Save", "Option", FormMethod.Post ))
{
<tr style="@(options[i].OptionEndOfLife ? "color:#777" : "")">
@Html.HiddenFor(model => options[i].OptionID)
<td>@options[i].ItemNumber</td>
<td width="100"><img @Html.Raw(POSGuys.Controllers.Shims.Resize("/content/images/catalog/" + options[i].image, 200, 200, rescale: 2)) /></td>
<td>@Html.EditorFor(model => options[i].OptionName)</td>
<td>@Html.EditorFor(model => options[i].PGPrice)</td>
<td>@Html.EditorFor(model => options[i].OptionsMSRP)</td>
<td>@Html.EditorFor(model => options[i].Cost)</td>
<td>@Html.EditorFor(model => options[i].Description)</td>
<td>@Html.EditorFor(model => options[i].Rank)</td>
<td>@Html.EditorFor(model => options[i].Standard)</td>
<td><input type="submit" value="Save" class="btn btn-warning" /></td>
</tr>
}
}
答案 0 :(得分:4)
您只需要确保您的代码生成的输入字段的名称值与Option类的属性名称相同,并且模型绑定将起作用。
@for (int i = 0; i < options.Count(); i++)
{
using (Html.BeginForm("Save", "Option", FormMethod.Post))
{
@Html.EditorFor(model => options[i].OptionName,null,"OptionName")
@Html.EditorFor(model => options[i].PGPrice,null, "PGPrice")
<input type="submit" />
<br />
}
}
现在,当您提交表单时,默认模型绑定器将能够将表单字段值映射到Option类对象的属性。
答案 1 :(得分:1)
更简单的解决方案-创建局部视图。 如果您的主视图为“列表”,则您的局部视图应该只是“模型”,并且一切将按应有的方式工作。