我之前建立了一个ASP.NET MVC应用程序,经过几个维护周期后,我想知道我是否采用了最佳状态管理方法。虽然一切都正常,但我感觉有更好的方法。
该网站基于具有多个选项的搜索功能。用户通过在表单中填写多个搜索选项并单击“搜索”按钮来开始使用该网站。此按钮将所有搜索选项作为参数定义到Search方法中进行提交,例如:
每个链接中的大多数参数值都不会从搜索的当前状态改变,但是我需要传递它们以便能够使用当前搜索参数在详细页面创建其他链接,例如“返回搜索结果”等。
当我因为新的功能请求需要添加搜索参数时,我发现自己需要修改很多链接以及链接所指向的任何控制器方法。这就是我觉得我需要更好的方法的地方。
我考虑过使用会话状态来保留搜索参数,但出于某种原因,我认为这不是在ASP MVC中使用的最好方式,因此我想知道是否有另一种更清晰的方法来实现这一点。
注意:我也尝试过在ActionLink中使用强类型对象的方法,但我仍然需要向该对象传递参数,因此并没有得到很好的改善。
欢迎提出任何想法。
该网站基于具有多个选项的搜索功能。用户通过在表单中填写多个搜索选项并单击“搜索”按钮来开始使用该网站。此按钮将所有搜索选项作为参数定义到Search方法中进行提交,例如:
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)%>
每个链接中的大多数参数值都不会从搜索的当前状态改变,但是我需要传递它们以便能够使用当前搜索参数在详细页面创建其他链接,例如“返回搜索结果”等。
当我因为新的功能请求需要添加搜索参数时,我发现自己需要修改很多链接以及链接所指向的任何控制器方法。这就是我觉得我需要更好的方法的地方。
我考虑过使用会话状态来保留搜索参数,但出于某种原因,我认为这不是在ASP MVC中使用的最好方式,因此我想知道是否有另一种更清晰的方法来实现这一点。
注意:我也尝试过在ActionLink中使用强类型对象的方法,但我仍然需要向该对象传递参数,因此并没有得到很好的改善。
欢迎提出任何想法。