代码之家  ›  专栏  ›  技术社区  ›  caltuntas

存储页特定设置的ASP.NET MVC

  •  0
  • caltuntas  · 技术社区  · 15 年前

    我正在用ASP.NET MVC编写一个学习项目。我有一个页面“books”,它显示用户的书籍,并且在该页面中有一些排序和过滤选项,如下图所示。


    书页

    排序参数:标题、年份、作者… 筛选参数:已读、未读…


    当用户选择像“标题”这样的排序参数时,控制器按标题对书籍排序并返回到视图。然后,如果用户选择“读取”筛选器,我希望列出的书籍按“标题”排序并按“读取”参数筛选。

    据我所知,我必须存储排序和筛选参数才能做到这一点。我不确定什么是最好和容易的方法,因为我对ASP.NET MVC中的会话、httpContext和tempdata概念有点困惑。我可以使用经典的ASP.NET WebForms会话方式来实现这一点,但有些人说使用会话可能会带来问题。什么是替代方案,什么是最好和容易做到这一点的方法?

    2 回复  |  直到 15 年前
        1
  •  0
  •   tvanfosson    15 年前

    这取决于您是否希望用户在站点周围导航然后返回页面时所做的选择是持久的。如果需要持久化,那么在会话中存储选择是一种合理的方法。如果所选内容仅适用于该特定页面,则可以将所选内容放入视图数据中,并让视图中的所选内容由视图数据(或模型)中的值驱动。这样,当页面返回到浏览器时,每次往返的选择都会导致正确的默认值。

    我个人的感觉是,整个会议都应该保留这些选择,我把我的价值观存储在会议中。

        2
  •  0
  •   Al Katawazi    15 年前

    MVC框架为您提供了一些很好的选择。一种是在表单上有一个隐藏的输入,它为您存储信息。所以当你点击一个度假胜地按钮,它就会在该字段上输入来确定排序顺序。

    第二种更优雅的方法是使用与按钮相关联的值,所以如果我点击标题,它按标题排序,如果我点击作者,它按作者排序。控制器将能够检测到这一点。

    最后,还有一些优秀的JavaScript控件可以自动为您实现所有这些功能。我们想到的是ext网格控制,这绝对是个麻烦。它涉及到一些使用JavaScript的工作,但它完全值得!希望这有帮助