我想将值从用户控件传递到aspx页面。我正在尝试使用事件和代表。但是,我没有将对象引用设置为实例错误。
因此,当从用户控件中点击图像时,应该传递值
Mainpage.aspx
protected void Page_Load(object sender, EventArgs e)
{
ShoudldCome();
}
void MyParentMethod(string id)
{
// DO work
}
protected void ShoudldCome()
{
userControlPage g = new userControlPage();
g.eventName += new userControlPage.abcDel(MyParentMethod);
}
userControlPage.ascx
public delegate void abcDel(string id);
public event abcDel eventName;
protected void CallHere()
{
eventName(Id); // I GET Id=7 here.
//ERROR: Object reference not set to an instance of an object
}
protected void OnRowCommand(object sender, GridViewCommandEventArgs e)
{
var id = e.CommandArgument;
Id = id.ToString();
CallHere();
}
答案 0 :(得分:0)
这段代码需要很多改进,但从这个简单的事情开始:
if (eventName!=null) eventName(Id);
不知道id来自哪里,但检查是为了防止在没有人注册该事件的情况下出现空引用异常。
因此,如果此代码未运行:
g.eventName += new userControlPage.abcDel(MyParentMethod);
你做了Callhere,
然后你有问题,因为还没有人注册。