我在视图中有一个表,我收集数据并发送到我的控制器,它通过UpdateData函数(它只是乘以数据)。更新后,我将其返回到视图,并在表格中正确显示更新。一旦我再次单击“提交”按钮,它会将表数据发送回视图但是它的原始数据而不是更新的集合?我错过了一些关于在MVC视图中收集表数据的内容吗?非常感谢任何帮助。
@model SDSProgrammingChallenge.Models.ItemList
@{
ViewBag.Title = "Welcome to The Inn";
}
@using (Html.BeginForm("UpdateQuality", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
<div class="row">
<div class="form-group">
<table class="table table-bordered">
<tr>
<th>@Html.DisplayNameFor(m => m.ItemLists.FirstOrDefault().Name)</th>
<th>@Html.DisplayNameFor(m => m.ItemLists.FirstOrDefault().SellIn)</th>
<th>@Html.DisplayNameFor(m => m.ItemLists.FirstOrDefault().Quality)</th>
</tr>
@for (int i = 0; i < Model.ItemLists.Count(); i++)
{
<tr>
<td>@Html.DisplayFor(m => m.ItemLists[i].Name)</td>
<td>@Html.DisplayFor(m => m.ItemLists[i].SellIn)</td>
<td>@Html.DisplayFor(m => m.ItemLists[i].Quality)</td>
@Html.HiddenFor(m => m.ItemLists[i].Name)
@Html.HiddenFor(m => m.ItemLists[i].SellIn)
@Html.HiddenFor(m => m.ItemLists[i].Quality)
</tr>
}
</table>
<div class="form-group">
<div style="margin-top: 50px">
<input type="submit" class="btn btn-primary" value="Advance 1 Day"/>
</div>
</div>
</div>
</div>
}
和控制器
public ActionResult Index()
{
ItemList itemList = Helper.Helper.GetData();
return View("Index", itemList);
}
public ActionResult UpdateQuality(ItemList itemList)
{
itemList = Helper.Helper.UpdateQuality(itemList);
return View("Index", itemList);
}
根据请求添加功能。
public static ItemList UpdateQuality(ItemList Items)
{
for (var i = 0; i < Items.ItemLists.Count; i++)
{
// If NOT Aged Brie AND NOT Backstage Passes
if (Items.ItemLists[i].Name != "Aged Brie" && Items.ItemLists[i].Name != "Backstage passes to a TAFKAL80ETC concert")
{
if (Items.ItemLists[i].Quality > 0)
{
if (Items.ItemLists[i].Name != "Sulfuras, Hand of Ragnaros")
{
Items.ItemLists[i].Quality = Items.ItemLists[i].Quality - 1;
}
}
}
// If Aged Brie or Backstage
else
{
if (Items.ItemLists[i].Quality < 50)
{
Items.ItemLists[i].Quality = Items.ItemLists[i].Quality + 1;
if (Items.ItemLists[i].Name == "Backstage passes to a TAFKAL80ETC concert")
{
if (Items.ItemLists[i].SellIn < 11)
{
if (Items.ItemLists[i].Quality < 50)
{
Items.ItemLists[i].Quality = Items.ItemLists[i].Quality + 1;
}
}
if (Items.ItemLists[i].SellIn < 6)
{
if (Items.ItemLists[i].Quality < 50)
{
Items.ItemLists[i].Quality = Items.ItemLists[i].Quality + 1;
}
}
}
}
}
///// If NOT Sulfuras /////
if (Items.ItemLists[i].Name != "Sulfuras, Hand of Ragnaros")
{
Items.ItemLists[i].SellIn = Items.ItemLists[i].SellIn - 1;
}
///// If Sellin less than 0 //////
if (Items.ItemLists[i].SellIn < 0)
{
// If NOT Aged Brie
if (Items.ItemLists[i].Name != "Aged Brie")
{
if (Items.ItemLists[i].Name != "Backstage passes to a TAFKAL80ETC concert")
{
if (Items.ItemLists[i].Quality > 0)
{
if (Items.ItemLists[i].Name != "Sulfuras, Hand of Ragnaros")
{
Items.ItemLists[i].Quality = Items.ItemLists[i].Quality - 1;
}
}
}
else
{
Items.ItemLists[i].Quality = Items.ItemLists[i].Quality - Items.ItemLists[i].Quality;
}
}
// If Aged Brie
else
{
if (Items.ItemLists[i].Quality < 50)
{
Items.ItemLists[i].Quality = Items.ItemLists[i].Quality + 1;
}
}
}
}
return Items;
}