我正在构建一个网络系统,各种客户端将在整个网站上为默认实例提供替代文本。有一个地方是主要导航,但还有其他地方。默认值可能是“项目”,但他们可能想将其称为“事件”。
我正在调用所有术语设置(大约有 15 个术语设置)并创建一个 ArrayList,该 ArrayList 具有 id 以及默认值或它们的替换项作为 ArrayList 中的项目。
我还有一个名为 TermKey 的枚举键列表,其中包含默认值和相应的 ID 号。
在整个代码中,我将引用 TermKey.Project,然后执行我视为选项的这些操作之一。 1-从 session 中提取文本(如果客户端已将其设置为“事件”,则文本“事件”将在那里等待调用) 2-每次需要时从数据库中提取文本。 3-每次加载页面时拉取客户端列表。
对各种影响的一些想法,或者是否有此类事情的最佳实践,我们将不胜感激。
最佳答案
本次 session 并不是获取此类信息的最佳场所。虽然是的,它是用户绑定(bind)的,但 session 状态实际上是用户绑定(bind)、 session 绑定(bind)信息的存储库。您似乎拥有的信息确实具有超出 session 范围的信息。
反射(reflect)此信息的最佳方式是使用自定义 ASP.NET Profile Provider 。您可以使用它来公开您需要公开的信息的属性,而属性中的逻辑将根据系统中的用户(或者匿名用户,如果未经过身份验证)将值设置为适当的值.
就您而言,您可以缓存这些值并根据需要在配置文件提供程序中访问数据库。
然后,这些信息通过 Profile property on the HttpContext class 暴露出来(如果您使用的是 ASP.NET MVC,也可以通过 Profile property on the HttpProfileBase class)。
关于C# 在 session 变量中存储替代文本或从数据库检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365911/