我有一个视图模型,其中包含一个包含列表的对象,我正在使用WebGrid输出此列表。
该页面当前可以回发到编辑/添加到此列表的多个操作。我想在所有回发中保留这些数据,以便所有Actions可以根据Actions在列表上执行的任何更改来执行操作。无论如何我可以让webgrid绑定到控制器中的模型吗?或者我是否需要使用会话/数据库等其他方法列表?
这是我的代码,以帮助澄清我的意思。
我有一个看起来像这样的视图模型:
public class EggBasketViewModel {
public Basket EggBasket { get; set; } // Contains list of eggs & other basket info
public Egg EggToAdd { get; set; }
}
我正在这样输出:
@model Basket.Models.EggBasketViewModel
@{
var grid = new WebGrid(Model.Eggs); // Eggs is my list of eggs
}
@using (Html.BeginForm()) {
@Html.Partial("_CreateOrEditEggBasket")
@Html.Partial("_CreateOrEditEgg")
@grid.GetHtml()
<p>
<button name="button" value="submitEgg">Add Egg</button>
<button name="button" value="submitBasket">Submit Basket</button>
</p>
}
我的控制器看起来像这样:
[HttpPost]
public ActionResult Create(EggBasketViewModel Model, string button)
{
if (ModelState.IsValid) {
switch (button) {
case "submitEgg":
return this.submitEgg(Model);
case "submitBasket":
return this.submitBasket(Model);
default:
break;
}
} else {
return View();
}
}
public ActionResult SubmitBasket(EggBasketViewModel Model) {
eggBasketRepository.InsertOrUpdate(Model.EggBasket);
eggBasketRepository.Save();
return RedirectToAction("Index");
}
public ActionResult SubmitEgg(EggBasketViewModel Model) {
Model.EggBasket.Eggs.Add(Model.EggToAdd);
return View(Model);
}
我创建它的方式是因为WebGrid会以模式绑定器能够在POST时将其绑定到我的视图模型的方式输出数据,因此使用WebGrid的html输出来保留任何新的Eggs。有没有什么方法WebGrid可以以与模型绑定器兼容的方式输出列表?或者我最好使用不同的方法?
感谢。