1

我有一个视图模型,其中包含一个包含列表的对象,并且我正在使用 WebGrid 输出此列表。

该页面当前可以回发到编辑/添加到此列表的多个操作。我想在所有回发中保留这些数据,以便所有操作都可以对过去操作在列表上执行的任何更改采取行动。无论如何我可以让 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 有没有办法以与模型绑定器兼容的方式输出列表?还是我最好使用不同的方法?

谢谢。

4

0 回答 0