日期:2014-05-17  浏览次数:20883 次

求帮助,ascx取值问题
P1.aspx.cs 和 P2.aspx.cs 中各定义了一个变量,

例如
P1中
int sid = 10;

P2中
int sid = 11;


我在P1.aspx和P2.aspx都调用了同一个head.ascx,可在head.ascx中却无法获取sid的值?
求帮助!!!

------解决方案--------------------
直接建个类,把你的变量放里面,让你的用户控件和网页共享就行了
------解决方案--------------------
引用:
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;
    .......
}