Если вы просто хотите использовать один OPISPriceReportOLY_Result
в методе действия, вам нужно переместить тег формы внутрь цикла.
Чистый подход - создать Partial View
.Вы можете прочитать больше в книге Адама Фримена .
Index.cshtml
@model IEnumerable<OPISPriceReportOLY_Result>
<table class="table">
@foreach (var item in Model)
{
@Html.Partial("_Result", item)
}
</table>
_Result.cshtml
@model OPISPriceReportOLY_Result
@using (Html.BeginForm("Update", "Home", FormMethod.Post))
{
<tr>
<td>
@Html.DisplayFor(x => x.cpid)
@Html.HiddenFor(x => x.cpid)
</td>
<td>
@Html.DisplayFor(x => x.Zone)
@Html.HiddenFor(x => x.Zone)
</td>
<td>
@Html.DisplayFor(x => x.ZoneDescription)
@Html.HiddenFor(x => x.ZoneDescription)
</td>
<td>
@Html.DisplayFor(x => x.Rack)
@Html.HiddenFor(x => x.Rack)
</td>
<td>
@Html.DisplayFor(x => x.ActualProduct)
@Html.HiddenFor(x => x.ActualProduct)
</td>
<td>
@Html.DisplayFor(x => x.Cost)
@Html.HiddenFor(x => x.Cost)
</td>
<td>
@Html.TextBoxFor(x => x.DMarkup)
</td>
<td>
@Html.TextBoxFor(x => x.DSell)
</td>
<td>
@Html.TextBoxFor(x => x.RMarkup)
</td>
<td>
@Html.TextBoxFor(x => x.RSell)
</td>
<td>
@Html.DisplayFor(x => x.DateUpdated)
@Html.HiddenFor(x => x.DateUpdated)
</td>
<td>
<button type="submit">Update</button>
</td>
</tr>
}
Контроллеры
После обновления в базе данных вы не сможете return View("Index", model);
.Индексное представление ожидает перечисления.Наилучшим подходом является повторное перенаправление на страницу индекса.
public class HomeController : Controller
{
public ActionResult Index()
{
List<OPISPriceReportOLY_Result> results = new List<OPISPriceReportOLY_Result>();
results.Add(new OPISPriceReportOLY_Result { cpid = 1 });
results.Add(new OPISPriceReportOLY_Result { cpid = 2 });
results.Add(new OPISPriceReportOLY_Result { cpid = 3 });
return View(results);
}
[HttpPost]
public ActionResult Update(OPISPriceReportOLY_Result model)
{
if (ModelState.IsValid)
{
int id = model.orpid;
using (var context = new IntranetCoreEntities())
{
var selected = context.OPISRetailPricings.Find(id);
selected.DMarkup = model.DMarkup;
selected.DSell = model.DSell;
selected.RMarkup = model.RMarkup;
selected.RSell = model.RSell;
context.SaveChanges();
}
}
return RedirectToAction("Index");
}
}