Ell*_*rks 1 c# asp.net-mvc razor asp.net-mvc-5
我在这里看到了一些非常相似的帖子,内容涉及迭代模型列表并在每次迭代中创建一个表单,但没有任何内容让我成功地 POST 回填充模型。
我的目标是为模型的每次迭代呈现一个内联表单,并允许用户在提交相关表单时对该特定模型进行更改和保存编辑。我对 ASP.NET MVC 还是很陌生,所以如果有更好的方法来解决这个问题,请随时提供建议。
在此先感谢您的帮助!
看法
@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>
}
}
Run Code Online (Sandbox Code Playgroud)
控制器
[HttpPost]
public ActionResult Save(Option option)
{
var opt = StoreDatabase.Options.Find(option.OptionID);
if (opt != null)
{
StoreDatabase.Entry(opt).CurrentValues.SetValues(option);
StoreDatabase.SaveChanges();
}
return RedirectToAction("EditList", option.ProductID);
}
Run Code Online (Sandbox Code Playgroud)
您只需要确保您的代码生成的输入字段的名称值与 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 />
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当您提交表单时,默认模型绑定器将能够将表单字段值映射到 Option 类对象的属性。
| 归档时间: |
|
| 查看次数: |
2758 次 |
| 最近记录: |