我是初学者。我还在学习。我编写了此代码,该代码可以按预期工作。 但是,每次我回到另一个页面时,它当然都无法保存到列表中。 当我离开此页面后,它会立即消失。
服务器页面如下
[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>
“我已经尝试过搜索它并在很多地方寻找它,但是还没有找到足够好的答案”
-嗯,我可能需要在某个地方循环?
如您所见,这是一种将数据发布到列表的非常简单的方法。我可以继续添加到列表中吗? (也许与生命周期有关)。非常感谢您的宝贵时间。
答案 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"];