从视图中的表多次发送数据到控制器

时间:2017-07-29 22:19:46

标签: asp.net asp.net-mvc

我在视图中有一个表,我收集数据并发送到我的控制器,它通过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;
    }

0 个答案:

没有答案