通过多个回发来保持MVC4控制器数据

时间:2012-09-03 12:54:55

标签: asp.net-mvc-4 viewbag

我有一个MVC4控制器多次调用其视图,每次使用不同的ViewBag集。该视图根据这些ViewBag的缺失或存在呈现Form的内容,如下所示:

@using (Html.BeginForm())
{
    @if (ViewBag.Foo1 != null)
    {
        @Html.DropDownList("Bar1",....
    }

    @if (ViewBag.Foo2 != null)
    {
        @Html.DropDownList("Bar2",....
    }

    <input name="ActionButton" type="submit" value="Ok"" />
}

每次用户点击提交按钮时,控制器会在再次调用视图之前检查集合中的内容并创建一组新的ViewBag,如​​下所示:

public ActionResult Create()
{
    ViewBag.Foo1 = "blawblaw";
    return View();
}

[HttpPost]
public ActionResult Create(FormCollection collection)
{
    if (collection["Bar1"] != null)
    {
        string FirstPass = collection["Bar1"];
        ViewBag.Foo2 = "blawblaw";
    }

    if (collection["Bar2"] != null)
    {
        string SecondPass = collection["Bar2"];
        ViewBag.Foo3 = "blawblaw";
    }

    return View();
}

我现在需要做的是以某种方式通过控制器'记住'关于其先前传球的一些东西。也就是说,在我的例子中,第二次通过控制器(集合[“Bar2”]为真的那个),FirstPass的值为空。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

在这种情况下,请查看在MVC中实现向导的最佳实践。一些good suggestions here。我个人仍然会考虑使用单独和不同的网址。此外,如果您在解决方案中具有数据库访问权限,则在更新主模型之前仍可以存储临时数据。想想如果用户第一次没有完成整个旅程你想要发生什么......