我正在尝试将ASCX.cs所需的所有数据库调用分开,只能从ASPX.cs调用,我正在尝试使用委托和事件。
我的ASCX.cs有
namespace x.xx.xy.xyy.xyyy
{
public partial class PaymentItem : UserControlBase
{
public delegate void Handler(Dictionary<string, string> keyvalues);
public event Handler aPICall;
}
}
我的ASPX.cs已经
namespace x.xx.xz.xzz.xzzz
{
public partial class PaymentItemPopUp
{
protected global::x.xx.xy.xyy.xyyy.PaymentItem ucPaymentItem;
protected void Page_Load(object sender, EventArgs e)
{
this.ucPaymentItem.aPICall += new PaymentItem.Handler(ServiceAPICAll);
}
protected void ServiceAPICAll(Dictionary<string, string> keyvalues){
}
}
}
我得到的对象引用未设置为对象的实例&#39;当编译器命中以下行时 this.ucPaymentItem.aPICall + = new PaymentItem.Handler(ServiceAPICAll);
我认为问题来自以下一行
protected global :: x.xx.xy.xyy.xyyy.PaymentItem ucPaymentItem;
任何想法?
答案 0 :(得分:0)
我总是在课堂之外宣布我的代表
public delegate void PaymentItemHandler(...)
public partial class PaymentItem : UserControlBase
{
public PaymentItemHandler OnHandler { get; set;}
}
然后像你已经那样使用它
this.ucPaymentItem.OnHandler += new PaymentItemHandler(ServiceAPICall)
答案 1 :(得分:0)
现在有效。
我在我的aspx页面中删除了用户控件的设计器生成代码
我的ASPX.designer.cs
//protected global::System.Web.UI.UserControl PaymentItem1;
然后我改变了如下
我的ASPx.cs
protected global::x.xx.xy.xyy.xyyy.PaymentItem PaymentItem1;
我的ASPX
<%@ Register Src="~/_xy/xyy/xyyy/PaymentItem.ascx" TagName="PaymentItem" TagPrefix="uc1" %>
<uc1:PaymentItem runat="server" ID="PaymentItem1" />