正在HttpPost中删除静态成员
本文关键字:静态成员 删除 HttpPost 正在 | 更新日期: 2023-09-27 17:58:10
在ASP.NetCore MVC控制器中,我使用下面的HttpPost Create方法将一个新对象(Restaurant)添加到静态列表_restaurantData中,然后重定向到新Restaurant的"Details"页面。在调试时,我可以验证新的restaurant是否已添加到具有所有正确属性的_restaurantData中,并且正确的id是否已传递到RedirectToAction方法中。然而,一旦实际调用了"Details",新的Restaurant对象就会从_restaurantData中删除,因此"model"为null。在"Create"的退货声明和"Details"的开头之间,新餐厅怎么可能从列表中删除?我怎么能解决这个问题!
[HttpPost]
public IActionResult Create(RestuarantEditViewModel model)
{
var restaurant = new Restaurant();
restaurant.Name = model.Name;
restaurant.Cuisine = model.Cuisine;
_restaurantData.Add(restaurant);
return RedirectToAction("Details", new { id = restaurant.Id });
}
public IActionResult Details(int id)
{
var model = _restaurantData.Get(id);
if (model == null)
{
return RedirectToAction("Index");
}
return View(model);
}
这是将餐厅添加到列表中的代码。
public void Add(Restaurant newRestaurant)
{
newRestaurant.Id = _restaurants.Max(r => r.Id) + 1;
_restaurants.Add(newRestaurant);
}
重定向时,页面(及其底层控制器类)的状态将丢失,包括静态变量。您需要做的是在添加新实例后保存:
_restaurantData.Add(restaurant);
_restaurantData.SaveChanges(); // Assuming DbContext
然后,当您的页面加载到Details页面时,数据库将保存模型并成功检索它。
如果_restaurantData
不是DbContext
,则需要它有某种方法在页面加载之间保存数据。