我创建了一个Web控件,它需要来自其父页面的一些数据 它如何访问该数据?
更新:感谢您提供快速解决方案,但这些解决方案对我无效。 Visual Studio无法将页面的名称识别为类。我从班级定义的地方取名字:
public partial class Apps_Site_Templates_CollegesMain : cUICommonFeatures
(cUICommonFeatures继承自System.Web.UI.Page)
但是在控件中,当我定义
时 protected System.Web.UI.Page parentPage;
parentPage = (Apps_Site_Templates_CollegesMain)Page;
我收到了一个恭维错误:
找不到类型或命名空间名称'Apps_Site_Templates_CollegesMain'(您是否缺少using指令或程序集引用?)
我觉得我在这里缺少一些非常基本的东西,当我得到答案时,我可能会非常尴尬,但我确实需要帮助......
答案 0 :(得分:2)
如果父页面类已命名,请说出ParentPage,您可以在控件中执行此操作:
ParentPage page = (ParentPage)this.Page;
然后,您可以访问ParentPage上的属性和方法。如果您有更多页面使用相同的控件,则应使用父页面上的界面访问页面上的属性。
IParentPage page = (IParentPage)this.Page;
这会回答你的问题吗?
答案 1 :(得分:1)
有很多方法可以做到这一点。我认为最好的方法是为数据控件需要添加一个属性,并在页面中设置此属性。
您也可以从控件中访问您的页面:
string dataYouWant = ((YourParentPageName)Page).GetData();
或者您可以将数据添加到viewstate,并从子控件中读取它。
但正如我所说,我会选择第一个。
答案 2 :(得分:1)
所有控件(服务器控件,用户控件和自定义控件)都公开了一个属性Page
,允许您从控件的代码中访问包含的Page实例。
因此,您可以这样做:
// In Usercontrol code:
MyParentPage parentPage = this.Page as MyParentPage;
if (parentPage != null)
{
// Access the properties of the Parent page.
string t = parentPage.Title;
}
文章“Mastering Page-UserControl Communication”为控制页面交互提供了很好的初学者介绍。
答案 3 :(得分:1)
控件应该写成与它们所在的页面无关。如果控件需要一个数据,那么它应该公开一个公共属性,它是所需数据的类型。它所在的页面然后将该属性设置为控件所需的数据。这允许控件在另一个页面上使用,甚至可以成为UserControl的一部分,然后在父页面上使用UserControl。