asp.net - ascx和page之间的变量传递

时间:2009-12-11 03:59:27

标签: c# asp.net scope

有没有办法在页面范围内保留变量(对象)?我需要将一些对象从母版页传递给所有ascx文件。通常,我使用带参数的方法或结构。但现在我想问另一种方法。将它存储在会话中是一个坏主意,因为我的对象应仅存在于页面范围中。

5 个答案:

答案 0 :(得分:3)

一种方法是在用户控件中设置属性。您可以从实现它们的所有页面中读取和设置这些内容。

答案 1 :(得分:1)

您可以将变量公开给母版页的公共属性:

public string MyVariable { get; set; }

然后通过引用母版页并从其转换为特定类型来从用户控件访问它们:

((MyMasterPageType)Page.Master).MyVariable 

答案 2 :(得分:1)

另一种方法是将共享对象存储在HttpContext.Items集合中。

答案 3 :(得分:0)

所以你有母版页,用户控件和页面本身。

该页面是母版页和用户控件的容器,因此它是唯一一个“知道”2方的人。所以我建议(如果你没有)你有页面实例来促进对象/变量在它们之间传递。

答案 4 :(得分:0)

如果您的变量值将逐页更改,那么我建议您在基页(或用户控件)中编写该代码并继承所有页面(或usercontrol),如果值将是对于所有页面(或用户控件),您也可以使用缓存对象。

如果您觉得甚至可以创建一个帮助程序类并从基页(或用户控件)调用它,那么可以使用更好的方法,这样您就可以将变量赋值代码与页面分开。