C# 在 session 变量中存储替代文本或从数据库检索

标签 c# asp.net session-variables

我正在构建一个网络系统,各种客户端将在整个网站上为默认实例提供替代文本。有一个地方是主要导航,但还有其他地方。默认值可能是“项目”,但他们可能想将其称为“事件”。

我正在调用所有术语设置(大约有 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/

相关文章:

c# - 以编程方式取消订阅 YouTube 用户 C#

C# Linq 多个查询在一个单一的

asp.net - 如何显式地将 ASP.NET session 设置为仅在关闭浏览器或显式注销时过期?

java - 带菜单的 ZK session 变量

php - session 验证破坏 session

c# - Datagrid 添加时删除重复行

c# - 无法首先从 EF 代码打开生成的数据库

php - 将脚本从 PHP mysql_insert_id header 、位置方法转换为 PHP session 方法

c# - "Translate"属性名转换成可读的名字

c# - 使用现有 key 向 Session 添加新对象是否会替换旧对象?