求帮助,ascx取值问题
P1.aspx.cs 和 P2.aspx.cs 中各定义了一个变量,
例如
P1中
int sid = 10;
P2中
int sid = 11;
我在P1.aspx和P2.aspx都调用了同一个head.ascx,可在head.ascx中却无法获取sid的值?
求帮助!!!
------解决方案--------------------直接建个类,把你的变量放里面,让你的用户控件和网页共享就行了
------解决方案--------------------
在设计中,设计师通常不会随便设计“相互循环依赖”的对象。
如果head.ascx是个通用服务组件,可能用在各种宿主ascx(以及aspx)中,那么它就不想当然地去纠结什么P1、P2、......Pn变化。
它通常会定义一个
public int sid{get;set;}
属性,然后让宿主把参数传给它,就好像TextBox控件它让你把Text属性传给它一样。
而如果这个值是很偶然才会用到的,也许head.ascx会重新解释这个机制,说成是“事件”。例如
public event MyEventHandler RequireSid;
然后在自定义的委托类型MyEventHandler中的自定义参数(例如第二个参数)中有一个int类型的属性,用户宿主程序响应这个事件时给它赋值。于是head.ascx可能就写
if(this.RequireSid !=null)
{
var e = new MyEventArgument();
this.RequireSid(this, e);
int result = e.RetData;
.......
}