什麼是最終的解決方法)在ASP.NET MVC應用程序中堅持'Conversational state'的最佳實踐是什麼? ?
期望中的場景是:
- 多步的形式。
- 如果一個頁面上有標籤,標籤應該堅持自己的'的視圖狀態」 無論導航用戶選擇
- ,它應該不會影響(更恰當,
bother
)會話狀態管理。
這些只是幾個方面,但我覺得它們實際上有很大的相關性。
什麼是最終的解決方法)在ASP.NET MVC應用程序中堅持'Conversational state'的最佳實踐是什麼? ?
期望中的場景是:
bother
)會話狀態管理。這些只是幾個方面,但我覺得它們實際上有很大的相關性。
我曾經在Asp.Net MVC中使用過Wizard類型的窗體,在這種情況下做的最好的事情是使用Model/ModelBinding來跟蹤窗體輸入。
我們可以創建一個控制器操作鏈(對於每個步驟),每個步驟的輸出模型用作下一個步驟(操作)的輸入模型。
例如,如果我們有三個步驟來創建用戶。然後UserController可以爲每個步驟執行操作。
public ActionResult Step1()
{
User user = new User();
return View(user);
}
[Post]
public ActionResult Step1(User user)
{
//perform business validation
RedirectToAction<UserController>(u => Step2(user));
}
之後Step2操作將接管來自Step1的修改後的用戶並可以呈現其自己的視圖等等。
您可能還想查看http://blog.maartenballiauw.be/post/2009/10/08/Leveraging-ASPNET-MVC-2-futures-ViewState.aspx。 MVC Futures中有一個Html.Serialize()助手。該文章將其稱爲輕量級Viewstate,但它實際上只是一個榮耀的包裝,「序列化此對象並將base64字符串存儲在隱藏的表單字段中」。如果您需要將狀態與單個頁面相關聯,而不是整個會話,則此幫助器可能適合您的需求。
不確定「解決方法」,但你有沒有考慮過使用AJAX和jQuery?根據您列出的要求,兩者都是適當的。
希望我從不使用AJAX和JavaScript,但使用+1提及standart fallback選項:) – Bubba88 2010-05-08 06:54:24
什麼是「會話狀態」? – Pierreten 2010-05-02 05:44:11
這是有關當前用戶和Web應用程序對話的信息。我的意思是,這包括任何東西:從用戶的身份,通過當前交互的有效模式,到視覺元素的期望狀態(在ASP.NET WebForms中稱爲viewstate) – Bubba88 2010-05-02 05:47:53