2009-04-08 68 views
2

假设每个用户都有一定的首选项保存在该用户的数据库中。 例如:unitSystem来的UILanguage时区 ...ASP.NET MVC - 如何处理应用程序的全局设置

当HTTP请求由我们需要能够访问用户的喜好(如unitSystem来时区 .. )正确处理数据并以正确的语言呈现视图。

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

  1. 阅读从数据库中的用户的喜好为每个HTTP请求
  2. 读取用户的偏好,一旦当用户登录到应用程序,并将其保存在session变量。
  3. 当用户登录到应用程序并将其保存在cookie中时,请阅读用户偏好设置一次。

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

回答

1

在你的情况,我可能会存储在会话和饼干的设置,并检查他们在这个顺序:

  1. 检查会话变量。
  2. 如果不在会话中,请检查cookie并在会话中存储cookie值。
  3. 如果不在cookie中,请检查数据库并存储在cookie和会话中。

这样,你应该能够处理会话超时&用户关闭Cookie相当透明,而仍然只有在绝对必要击中DB最大限度地提高性能。

当然,如果用户在数据库中更改其首选项,您需要一些机制来更新Cookie和会话。假设这些偏好设置在同一个应用程序中,这不应该太大。

+0

感谢您的意见。 CasperOne建议使用配置文件提供程序,这听起来很有趣,我可能将其用于其他目的,但对于这种情况,我更愿意在自己的代码中处理它。 – xraminx 2009-04-09 04:19:54

1

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

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

然后,您可以创建自己的个人资料提供者(如果提供者之一不满足您的需求),这将加载/保存配置文件数据。

+0

感谢您的提示。听起来很有趣,但如果我可以在合理的时间内编写相同的功能,我宁愿避免使用自动工具来处理幕后的事情。如果更容易,我将对细节和维护有更多的控制权。 – xraminx 2009-04-09 04:16:55

相关问题