asp.net从视图发布到服务器端的List <>

时间:2018-11-09 19:02:16

标签: c# asp.net asp.net-mvc

我是初学者。我还在学习。我编写了此代码,该代码可以按预期工作。 但是,每次我回到另一个页面时,它当然都无法保存到列表中。 当我离开此页面后,它会立即消失。

服务器页面如下

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult pizaCart(string pizaName, string pizaDesc, string pizaPrice)
    {

        List<pizaModel> cartList = new List<pizaModel>();
        toCart.CartList = cartList;

        pizaName = Request.Form["pizaName"];
        pizaDesc = Request.Form["pizaDesc"];
        pizaPrice = Request.Form["pizaPrice"];

        cartList.Add(new pizaModel { name = pizaName, desc = pizaDesc, price = pizaPrice });

        return View(toCart);

    }

html页面如下。

    <form action="piza" method="post">

        <input class="n" type="text" name="pizaName" id="pizaName" value="" /><br />
        <input class="n" type="text" name="pizaDesc" id="pizaDesc" value="" /><br />
        <input class="n" type="text" name="pizaPrice" id="pizaPrice" value="" /><br />
        <button class="btn">add</button>

    </form>

“我已经尝试过搜索它并在很多地方寻找它,但是还没有找到足够好的答案”

-嗯,我可能需要在某个地方循环?

如您所见,这是一种将数据发布到列表的非常简单的方法。我可以继续添加到列表中吗? (也许与生命周期有关)。非常感谢您的宝贵时间。

2 个答案:

答案 0 :(得分:3)

致电时

new List<pizaModel>()

...您正在创建一个新列表。一个新列表的元素为零。

此后立即致电

cartList.Add(new pizaModel { name = pizaName, desc = pizaDesc, price = pizaPrice });

...将当前项目添加到列表中,从而导致列表中包含一项。

此代码中没有添加到现有列表的概念,并且永远不会包含多个项目。

您将需要找出某种方法来使列表从一个动作到另一个动作。例如,您可以将列表保留在浏览器中,然后将post the whole list保留为JSON。或者,您可以store the list in a session variable或服务器端的数据库表。

答案 1 :(得分:0)

您可以使用以下会话

Session["myPizza"] = cartList ;

然后从“动作”结果的结尾处将其投射如下:

var SelectedList = (List<pizaModel>)Session["myPizza"];