我前段時間已經構建了一個ASP.NET MVC應用程序,經過幾個維護週期後,我想知道是否採取了最佳的狀態管理方法。一切正常,但我覺得有更好的辦法。ASP.NET MVC中的狀態管理
該網站基於具有不少選項的搜索功能。用戶通過填寫表單中的多個搜索選項並單擊「搜索」按鈕來開始使用該網站。此按鈕職位的搜索方法與所有的搜索選項定義爲參數的搜索方法,例如:
public ActionResult Search(string param1, string param2, string param3, int? param3, long? param4)
現在的結果頁面,顯示了有一些關於它的鏈接,導致各種詳細信息頁面等。由於我所需要的搜索狀態的詳細信息頁面上被保留了,我發現自己創建ActionLinks有很多的參數,所有的地方,如:
<%=Html.ActionLink("LinkText", "MethodName", new {id="idOfDetailPage", param1=Model.param1, param2=Model.param2, param3=Model.param3, param4=Model.param4}, null)%>
在各個環節大多數參數值的做不是從搜索的當前狀態改變,但我需要傳遞它們以便能夠在具有c的詳細頁面中創建其他鏈接urrent搜索參數,例如「返回搜索結果」。
當我需要添加一個搜索參數由於新的功能要求,我發現自己修改了很多鏈接以及任何鏈接導致的控制器方法。這是我覺得我需要更好的方式。
我曾考慮過使用會話狀態來保持搜索參數,但由於某種原因,認爲這不是在ASP MVC中使用的最佳方式,所以我很好奇是否有另一種更簡潔的方法來實現這一點。
注意:我也嘗試過在ActionLink中使用強類型對象的方法,但我仍然需要將參數傳遞給該對象,所以效果不會好得多。
任何想法表示讚賞。
只要我總是將相同的搜索參數和搜索參數傳遞給動作如搜索動作。然而,當我需要將其他數據傳遞給該操作時,例如某個項目的標識(如細節頁面),我會遇到麻煩。然後,我不能簡單地將模型傳遞給Html.ActionLink輔助方法。此外,許多鏈接需要更改其中一個搜索參數,其餘部分保持不變,所以使用這種方法我需要不斷創建新的SearchParameters對象。它的作品,但一段時間後它變得混亂。 – 2010-01-04 17:27:37
我要堅持我的想法,並建議書籤搜索並不總是一件好事情 - 它取決於上下文和應用程序 - 尤其是如果搜索具有未公開的依賴關係在參數中。這就是說我認爲這是一個很好的概括( - : – Murph 2010-01-04 18:24:27