坚持MVC3 WebGrid数据

时间:2011-06-12 11:30:20

标签: asp.net-mvc-3 webgrid

我有一个视图模型,其中包含一个包含列表的对象,我正在使用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可以以与模型绑定器兼容的方式输出列表?或者我最好使用不同的方法?

感谢。

0 个答案:

没有答案