Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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# 从usercontrol获取父页面值_C#_Asp.net_Delegates - Fatal编程技术网

C# 从usercontrol获取父页面值

C# 从usercontrol获取父页面值,c#,asp.net,delegates,C#,Asp.net,Delegates,如何从usercontrol获取父页面值。 我在页面中有一个usercontrol。单击usercontrols按钮,我想在执行一个方法后从页面中获取一些值。我的usercontrol中需要这些值。在usercontrol中获取页面结果的最佳方法是什么。页面属性 原始方式: 第一个访问页属性: 接下来,您可以将Page属性强制转换为页面类型(无论它是什么),或者可以使用Page.FindControl方法从其他控件中查找页面值 以一种很好的方式,用户控件应该公开在单击此按钮时触发的事件,页面

如何从usercontrol获取父页面值。 我在页面中有一个usercontrol。单击usercontrols按钮,我想在执行一个方法后从页面中获取一些值。我的usercontrol中需要这些值。在usercontrol中获取页面结果的最佳方法是什么。

页面属性

原始方式: 第一个访问页属性:

接下来,您可以将Page属性强制转换为页面类型(无论它是什么),或者可以使用Page.FindControl方法从其他控件中查找页面值

以一种很好的方式,用户控件应该公开在单击此按钮时触发的事件,页面应该订阅此事件并将数据返回给控件


这就是您要查找的内容吗?

您可以使用
页面
属性获取对页面对象的引用。但是,引用不是特定页面类的类型,因此,如果不先强制转换它,则无法使用它访问类中的特定成员:

MySpecificPageClass page = (MySpecificPageClass)Page;

现在,您可以使用该引用访问该类的任何公共成员。页面中的控件通常声明为受保护,因此您可能必须将其访问级别更改为public,以便从外部访问它们。

+1表示第二种方法。usercontrol触发事件的方式是最好的方式,因为任何usercontrol都不应该控制页面。页面应该捕获该事件,并为用户控件提供必要的信息来显示。页面是控制器,用户控件只是视图。除此之外,当你的用户控件在不同的页面中使用时,转换到页面的特殊类型无论如何都会失败。不幸的是,有些人更喜欢走捷径……如果usercontrol位于多个页面上(usercontrols通常用于这些页面),则强制转换将失败。我更喜欢第二种方法,用户控件为页面触发一个事件,然后从页面(包含引用)向用户控件提供必要的信息。@Tim:说得好。对于设计用于不同页面的用户控件,方法当然完全不同。最后我找到了一个解决方案。我正在使用委托。现在,我可以在完成一些操作后从父页面获取值。