当前位置:编程学习 > C#/ASP.NET >>

动态生成自定义控件ascx如何给ascx传值

页面index1.aspx
 //页面index1.aspx后台动态添加的控件body1.ascx
 Control body1= Page.LoadControl(body1.ascx); 
 PlaceHolder1.Controls.Add(body1);

body1.ascx
//body1再次动态添加控件bigpic.ascx
Control uc= Page.LoadControl(bigpic.ascx);
PlaceHolder2.Controls.Add(uc);

现在想让body1.ascx添加控件bigpic.ascx的时候,如何给bigpic.ascx传值呢?
bigpic又该如何获取body1.ascx中穿来的值呢?求各位大神帮帮忙,找了好多的地方都没有满意的方法


自定义控件ascx 传值 --------------------编程问答-------------------- 反射就可以搞定 ,baidu 下 --------------------编程问答-------------------- Refer:


如果符合要求,Insus.NET再提供演示代码。 --------------------编程问答-------------------- 那是在两个页面(请求)中,两个不同的Page和ascx实例,反射没什么用
你的问题差不多等同于如何在两个页面中传参
所以
1.不敏感的信息,比如ID什么的,最简单的用GET方式,也就是通过url
在ascx中通过Request.QueryString取得
2.Post, 页面上放HiddenField, Request.Form获取
3.Cookie, Cache, Session或者ServerParams

如果是一个页中的,只需要公开属性或者Control与Page的关联关系就可以操作
--------------------编程问答-------------------- 刚才有网友私下问演示代码了:
http://www.cnblogs.com/insus/p/3248170.html --------------------编程问答-------------------- bigpic.ascx 加一个属性就可以了,或者加一个public的“变量”也行


Control uc= Page.LoadControl(bigpic.ascx);

假设 bigpic.ascx 的类名 是 BigPic
要改成 

BigPic uc= (BigPic)Page.LoadControl(bigpic.ascx);

uc.属性名称 = "";

这样就可以了。
--------------------编程问答-------------------- 直接给ascx传参~~  --------------------编程问答-------------------- 拷,我发现今天白天够狗血的
body1.ascx看成了body1.aspx,以为是两个页面
LZ是ascx里再加载ascx,最简单的,将你要的参数封装为用户控件属性就行
LoadControl注意要放在Page_Init里,然后注册用户控件的事件处理(如果有) --------------------编程问答--------------------
引用 5 楼 u010793151 的回复:
bigpic.ascx 加一个属性就可以了,或者加一个public的“变量”也行


Control uc= Page.LoadControl(bigpic.ascx);

假设 bigpic.ascx 的类名 是 BigPic
要改成 

BigPic uc= (BigPic)Page.LoadControl(bigpic.ascx);

uc.属性名称 = "";

这样就可以了。

同意!

只是,实际上所谓BigPic是一个预先定义的具有接口作用的东西就可以了。于是不管你动态产生什么ascx,你生成的代码中要声明了ascx实现这个接口。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 看了四楼给的代码,基本思路是一样的,只是他的更严谨,使用范围更广泛。

他用的是接口,这样更灵活和更便于扩展。

如果只有一个地方是这种情况,那么用属性、方法都可以。

如果有多处的话,可以用基类,也可以用接口,这样更通用。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,