对象引用未设置为对象的实例 - 委托

时间:2015-03-17 18:39:21

标签: c# asp.net events user-controls delegates

我想将值从用户控件传递到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();
    }

1 个答案:

答案 0 :(得分:0)

这段代码需要很多改进,但从这个简单的事情开始:

 if (eventName!=null)  eventName(Id);

不知道id来自哪里,但检查是为了防止在没有人注册该事件的情况下出现空引用异常。

因此,如果此代码未运行:

g.eventName += new userControlPage.abcDel(MyParentMethod);

你做了Callhere,

然后你有问题,因为还没有人注册。

相关问题