动态生成自定义控件ascx如何给ascx传值
有机会看到有网友在论坛上发出问题:
在网页上的铵钮执行之后,动态加载的用户控件,如果没有处理好,会在子用户控件的铵钮被执行时抛弃。因此我们需要着重需要处理的关键点。
同相子用户控件在动态加载之后,它的状态也需要保持,不然在传值给另一个子用户控件时,也会被抛弃。
另一个关键点,就是子用户控件,怎样传值给另一个用户控件。
弄清楚技术关键点之后,一切都好办。
在网站上,创建一个网页Default.aspx,两个用户控件UcA.ascx和UcB.ascx
在Default.aspx:
去UcA.aspx
去UcB.aspx
所有网页与用户控件的html代码均完成。
UcB.aspx.cs需要获取一个值,这个值是从哪里来,是网页,还是另一个用户控件,它不清楚。就如同小时候,问父母要钱,这钱是父母的,还是父母向人借的,我们都不必知道,只管要到钱即可。
Insus.NET在此,创建一个接口,接口有一个Set的属性。
用户控件UcB.aspx.cs实作这个接口:
去Default.aspx.cs写程序:
上图中的ViewState是为了把动态加载的用户控件保留。
去UcA.ascx.cs:
网页运行的执行的效果: