c# - .net - 从用户控件访问页面全局变量

标签 c# .net user-controls global-variables

我想知道是否可以从页面上的用户控件访问页面的全局变量。

 public partial class index : System.Web.UI.Page
  {
    FormsIdentity id = (FormsIdentity)User.Identity;
    string custID = "some guid";
    string accID = "some guid";

    protected void Page_Load(object sender, EventArgs e)
    {
    }
  }

这只是一个例子,我实际的全局变量是更复杂的自定义配置对象,但应该是一样的。

我想从用户控件访问变量。这会很有帮助,因为我需要在页面和用户控件上使用相同的对象,而且我真的不想在内存中检索和存储两次。

有人知道是否/如何做到这一点吗?谢谢!

最佳答案

是的,你可以。它被称为将变量传递给用户控件。当然,它不止一次存储在内存中,但这是保持关注点分离和制作可重用控件的“代价”。

如果项目是常量,您可以将它们存储为真正的全局变量并通过 global.asax 中的静态方法访问。如果基于请求,这不会以简单的方式工作,但您可以对其进行设计。

现在,对于您不想在内存中存储两次的评论。我不会担心这一点,因为它是少量信息 (1),尤其是因为它只会在请求期间持续 (2)。不完全正确,因为 GC 不会立即触发。

关于c# - .net - 从用户控件访问页面全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894665/

相关文章:

c# - MultiDataTrigger 不适用于绑定(bind)路径条件

c# - LINQ 多重排序依据

c# - 在 C# 中引发事件并在 C++ MFC 中捕获

c# - 通过 C# 第四版的 CLR。 - 对等待任务死锁感到困惑

c# - 您如何简单地解释类型转发?

.net - 如何检查控件是否已加载?

VBA - 使用 RefEdit 作为范围

c# - 从 Google API Chart 获取图像

c# - 用于更新表存储实体的 Azure 函数 - 未找到 CloudTable.Execute

.net - IEnumerable 上的动态 LINQ?