我正在ASP.NET MVC中编写一个学习项目。我有一个显示用户书籍的“书籍”页面,该页面中有一些排序和过滤选项。
书页
排序参数:标题,年份,作者...... 过滤参数:读取,未读......
当用户选择类似“标题”的排序参数时,Controller按标题对书籍进行排序并返回查看。然后,如果用户选择“读取”过滤器,我希望列出的书籍按“标题”排序并按“读取”参数过滤。
据我所知,我必须存储排序和过滤参数才能做到这一点。我不知道什么是最好和最简单的方法,因为我对ASP.NET MVC中的Session,HttpContext,Tempdata概念有点困惑。我可以使用经典的ASP.NET Webforms Session方式做到这一点,但有些人说使用会话可能会引入问题。有哪些替代方案,最好和最简单的方法是什么?
答案 0 :(得分:0)
这取决于您是否希望在用户浏览网站时然后返回页面时选择是持久的。如果它需要持久化,那么将选项存储在会话中是一种合理的方法。如果选择仅针对该特定页面,则可以将选择放入ViewData中,并在ViewData(或Model)中的值驱动的视图中进行选择。这样,每次往返的选择都会在页面返回浏览器时产生正确的默认值。
我个人的感觉是,应该保留整个会话的选择,并将我的值保存在会话中。
答案 1 :(得分:0)
MVC框架有一些很好的选择。一个是在您的表单上有一个隐藏的输入,为您存储信息。因此,当您点击度假村按钮时,它会键入该字段以确定排序顺序。
第二种更优雅的方式是使用与您的按钮相关联的值,因此如果我按标题按标题排序,如果我按作者按作者排序。控制器将能够检测到这一点。
最后,您可以使用一些优秀的JavaScript控件来自动完成所有这些操作。想到的是EXT Grid控制,这绝对是非常棒的。它涉及到javascript的一些工作,但它完全值得!希望这有帮助