0
我有一個MVC4控制器多次調用其視圖,每次都有一組不同的ViewBag。堅持MVC4控制器的數據通過多個後發
@using (Html.BeginForm())
{
@if (ViewBag.Foo1 != null)
{
@Html.DropDownList("Bar1",....
}
@if (ViewBag.Foo2 != null)
{
@Html.DropDownList("Bar2",....
}
<input name="ActionButton" type="submit" value="Ok"" />
}
每次用戶點擊提交按鈕,控制器檢查,看看有什麼是收集和品牌在:認爲通過像這樣生成一個表單,基於缺乏或那些ViewBags存在的內容一組新的ViewBags的再次調用視圖,有點像在此之前:
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();
}
我現在需要做的是某種程度上已分別通過THU控制器「記住」講講以前的通行證。也就是說,在我的例子中,第二遍通過控制器(集合[「Bar2」]爲true的那個),FirstPass的值爲空。
我該怎麼做?
聽起來像你試圖重新使用MVC的WebForm,這是不正確的路要走。 MVC應該是無狀態的 - 它不會記住任何關於用戶已經發布的內容,除非你將這些數據保存在某個地方(數據庫)。您應該查看模型綁定,而不是使用viewbag,也使用不同的控制器。不要試圖通過相同的網址強制所有內容,否則你可能會陷入[此陷阱](http://37signals.com/svn/posts/2316-so-much-complexity-in-software-comes-from) 。 – Nick
我明白...但這個應用程序的90%是直線MVC CRUD功能和MVC是一個很好的適合那裏。然而,在這一頁上,我需要通過幾個步驟來吸引用戶,然後才能更新模型。 – davecove