【问题标题】:ASP.NET MVC : Create an ambient valueASP.NET MVC:创建环境值
【发布时间】:2010-01-21 17:03:51
【问题描述】:

我有一个简单的网站。几乎每个操作都将int toonId 作为参数(toonId 不等同于用户:一个用户可以拥有多个卡通)。
目前,我从控制器向每个视图提供该值,并且每个链接和提交按钮都会将此值发送回控制器。
这行得通。我只是在寻找一种更简单的方法来实现这一点(想到 AOP)。

我使用 cookie 来保存“最喜欢的/默认卡通”,这很好用(与 ActionAttribute 一起使用,它从 cookie 中获取 toonId 并传递给 toonId 参数,如果未提供 toonId)。但我也想支持无 cookie 会话。

问题:向页面添加环境变量而不显式传递它的简单方法是什么?这样它就可以与无 cookie 的浏览器一起使用。

Viewstate 是一种可行的方法吗(不应该在 MVC 中)?
服务器端会话是否可行?

【问题讨论】:

    标签: asp.net-mvc session viewstate


    【解决方案1】:

    这正是会话的意义所在。

    asp.net mvc 中没有页面生命周期,因此没有视图状态。

    【讨论】:

      【解决方案2】:

      如果您插入自己的IRouteHandler 实现,我相信您可以自动传递查询字符串参数以使用无cookie 浏览器。我还没有尝试过。我找到了实现IRouteHandleran example,虽然它没有展示如何实现查询字符串参数功能。

      【讨论】:

        【解决方案3】:

        我不清楚“toonid”代表什么。如果它是“每个用户会话的环境”,那么正如 womp 所说,会话状态可以很好地解决这个问题。但是,如果它的范围更大(例如,所有用户都可以访问的 toonids 集合),那么 Cache 将是一种更好且更具可扩展性的策略。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-04
          • 2011-05-15
          • 1970-01-01
          • 1970-01-01
          • 2018-12-13
          • 2017-04-02
          • 2021-07-30
          相关资源
          最近更新 更多