【发布时间】:2017-11-23 14:29:41
【问题描述】:
您好,出于某种原因,我可以在一个 Action 方法中将项目添加到列表中,但是每当我通过另一种方法将列表传递给视图时,列表似乎是空的。为什么会这样,有人可以解释一下吗?以前用别的方法加过东西,为什么列表是空的?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Hotel.Models;
using System.Diagnostics;
namespace HotelTwee.Controllers
{
public class HomeController : Controller
{
public List<Hotel> preOrders = new List<Hotel>();
public IActionResult Index()
{
// List Count is ZERO here
return View(preOrders);
}
[HttpGet]
public IActionResult Create()
{
return View();
}
[HttpPost]
public IActionResult Create(Hotel order)
{
preOrders.Add(order);
// List COUNT is ONE here
return RedirectToAction("Index", preOrders);
}
}
}
编辑:
删除 RedirectToAction 并使用 return View("Index", preOrders) 已解决问题
【问题讨论】:
-
你的控制器为每个请求实例化,它不保持任何状态。
-
但是我必须使用一个列表来进行我的练习。在这种情况下,如何使用 List 而不是数据库,而不将它放在控制器中?
-
将数据保存到永久介质(例如:数据库)并在索引操作中再次读取。
-
列出
static可以解决您的问题,但是出于并发原因,这可能不是一个好主意
标签: c# asp.net-mvc