Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net-ascx和页面之间的变量传递_C#_Asp.net_Scope - Fatal编程技术网

C# asp.net-ascx和页面之间的变量传递

C# asp.net-ascx和页面之间的变量传递,c#,asp.net,scope,C#,Asp.net,Scope,有没有办法将变量(对象)保留在页面范围内?我需要将一些对象从母版页传递到所有ascx文件。通常,我使用带有参数的方法或结构进行传递。但是现在我在问另一种方法。将其存储在会话中是个坏主意,因为我的对象应该只存在于页面作用域中。一种方法是在用户控件中设置属性。您可以从实现这些控件的所有页面读取和设置它们。一种方法是在用户控件中设置属性。您可以从实现它们的所有页面中读取和设置它们。因此您有母版页、用户控件和页面本身 页面是母版页和用户控件的容器,因此它是唯一“了解”这两方的页面。因此,我建议(如果您没

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

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

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

因此您有母版页、用户控件和页面本身


页面是母版页和用户控件的容器,因此它是唯一“了解”这两方的页面。因此,我建议(如果您没有)使用页面实例,以方便对象/变量在它们之间传递。

因此您有母版页、用户控件和页面本身


页面是母版页和用户控件的容器,因此它是唯一“了解”这两方的页面。因此,我建议(如果您没有)使用页面实例,以方便对象/变量在它们之间传递。

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

public string MyVariable { get; set; }
然后通过引用母版页并转换为其特定类型,从用户控件访问它们:

((MyMasterPageType)Page.Master).MyVariable 

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

public string MyVariable { get; set; }
然后通过引用母版页并转换为其特定类型,从用户控件访问它们:

((MyMasterPageType)Page.Master).MyVariable 

如果变量的值将在每页的基础上更改,那么我建议您在基页(或用户控件)中编写该代码并继承所有页(或用户控件),如果所有页(或用户控件)的值都相似,那么您也可以使用cache对象


如果您觉得您甚至可以创建一个helper类并从您的基页(或用户控件)调用它,那么使用一种更好的方法,这样您就可以从页面中分离变量分配代码

如果变量的值将在每页的基础上更改,那么我建议您在基本页(或用户控件)中编写该代码并继承所有页(或用户控件),如果所有页(或用户控件)的值都类似,那么您也可以使用cache对象


如果您觉得您甚至可以创建一个helper类并从您的基页(或用户控件)调用它,那么使用一种更好的方法,这样您就可以从页面中分离变量分配代码

另一种选择是在HttpContext.Items集合中存储共享对象。

另一种选择是存储共享对象在HttpContext.Items集合中。

如果在基类或接口中定义这些属性,则它们可以在用户控件和母版页之间形成约定。如果在基类或接口中定义这些属性,则它们可以在用户控件和母版页之间形成约定。如果较小,y不是查询字符串?如果它很小,y不是查询字符串?