Asp.net mvc ASP.NET MVC-如何处理应用程序的全局设置

Asp.net mvc ASP.NET MVC-如何处理应用程序的全局设置,asp.net-mvc,Asp.net Mvc,假设每个用户都有某些首选项,这些首选项保存在该用户的数据库中。 例如:UnitSystem、UILanguage、时区 当发出http请求时,我们需要访问用户首选项(例如UnitSystem、时区等),以便正确处理数据并以正确的语言呈现视图 在程序执行期间,保存/访问用户首选项的正确方法是什么 从数据库中读取每个http请求的用户首选项 当用户登录到应用程序时,读取用户首选项一次,并将其保存在会话变量中 当用户登录到应用程序时,读取用户首选项一次,并将其保存在cookie中 如何在基于MVC的应

假设每个用户都有某些首选项,这些首选项保存在该用户的数据库中。 例如:UnitSystem、UILanguage、时区

当发出http请求时,我们需要访问用户首选项(例如UnitSystem、时区等),以便正确处理数据并以正确的语言呈现视图

在程序执行期间,保存/访问用户首选项的正确方法是什么

  • 从数据库中读取每个http请求的用户首选项
  • 当用户登录到应用程序时,读取用户首选项一次,并将其保存在会话变量中
  • 当用户登录到应用程序时,读取用户首选项一次,并将其保存在cookie中

  • 如何在基于MVC的应用程序中处理全局设置?

    在您的情况下,我可能会将设置存储在会话和cookie中,并按以下顺序进行检查:

  • 检查会话中的变量
  • 如果不在会话中,请检查cookie并在会话中存储cookie值
  • 如果不在cookie中,请检查数据库并存储在cookie和会话中
  • 通过这种方式,您应该能够处理会话超时&cookies关闭的用户非常透明,同时只有在绝对必要时才点击数据库,从而最大限度地提高性能


    当然,如果用户在数据库中更改了他们的首选项,您还需要一些机制来更新cookie和会话。假设在同一个应用程序中设置了这些首选项,这应该不是什么大问题。

    这就是ASP.NET中配置文件提供程序的用途。查看MSDN文档中标题为“ASP.NET配置文件属性概述”的部分,位于:


    然后,您可以创建自己的配置文件提供商(如果提供的其中一个不适合您的需要),该提供商将加载/保存配置文件数据。

    感谢您提供的精彩提示。听起来很有趣,但如果我能在合理的时间内编写相同的功能,我宁愿避免在幕后处理事情的自动工具。如果更简单的话,我将对细节和维护有更多的控制。@xraminix:profile类不是一个工具,它是ASP.NET模型固有的一部分,如响应、请求等。它只是有一个插件模型,可以扩展。谢谢你的建议。CasperOne建议使用配置文件提供程序,这听起来很有趣,我可能会用于其他目的,但对于这种情况,我更喜欢在自己的代码中处理它。