有没有办法在页面范围内保留变量(对象)?我需要将一些对象从母版页传递给所有ascx文件。通常,我使用带参数的方法或结构。但现在我想问另一种方法。将它存储在会话中是一个坏主意,因为我的对象应仅存在于页面范围中。
答案 0 :(得分:3)
一种方法是在用户控件中设置属性。您可以从实现它们的所有页面中读取和设置这些内容。
答案 1 :(得分:1)
您可以将变量公开给母版页的公共属性:
public string MyVariable { get; set; }
然后通过引用母版页并从其转换为特定类型来从用户控件访问它们:
((MyMasterPageType)Page.Master).MyVariable
答案 2 :(得分:1)
另一种方法是将共享对象存储在HttpContext.Items集合中。
答案 3 :(得分:0)
所以你有母版页,用户控件和页面本身。
该页面是母版页和用户控件的容器,因此它是唯一一个“知道”2方的人。所以我建议(如果你没有)你有页面实例来促进对象/变量在它们之间传递。
答案 4 :(得分:0)
如果您的变量值将逐页更改,那么我建议您在基页(或用户控件)中编写该代码并继承所有页面(或usercontrol),如果值将是对于所有页面(或用户控件),您也可以使用缓存对象。
如果您觉得甚至可以创建一个帮助程序类并从基页(或用户控件)调用它,那么可以使用更好的方法,这样您就可以将变量赋值代码与页面分开。