2009-12-11 43 views
0

有没有什么方法可以将变量(对象)保留在页面作用域中?我需要从母版页传递一些对象到所有的ascx文件。通常,我通过使用具有参数的方法或结构传递。但现在我问另一种方式来做到这一点。将它存储在会话中是一个坏主意,因为我的对象应该只存在于页面范围内。asp.net - ascx和页面之间的变量传递

+0

如果它很小,y不是查询字符串? – Pierreten 2009-12-11 04:04:45

回答

1

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

3

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

+0

如果您在基类或接口中定义这些属性,那么它们可以在用户控件和母版页之间形成一个契约。 – 2009-12-11 04:11:20

0

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

该页面是masterpage和用户控件的容器,因此它是唯一一个'知道'这两方的容器。所以我会建议(如果你没有)你有页面实例,以促进对象/变量之间传递。

1

你可以暴露你的变量母版页的公共属性:

public string MyVariable { get; set; } 

然后通过引用母版页,并铸造了特定类型的用户控件访问它们:

((MyMasterPageType)Page.Master).MyVariable 
0

如果您的变量的值将在每个页面的基础上进行更改,那么我会建议您将该代码写入基本页面(或用户控件),并继承所有页面(或usercontrol),如果这些值将与所有页面(或用户控件)都可以使用缓存ob ject也是如此。

如果您觉得自己甚至可以创建一个助手类并从您的基页(或用户控件)调用该助手类,那么您可以从页面中分离变量赋值代码。