“System.NullReferenceException--对象引用未设置为对象的实例。” Web方法,用户控制

时间:2011-11-17 12:59:15

标签: c# asp.net user-controls webmethod

我有一个ModalPopupExtender(mpe),它会在点击asp:按钮时显示。该按钮调用一个javascript函数,然后调用webmethod。 webmethod位于页面后面的代码中。

webmethod将字符串变量传递给后面代码中的另一个方法。它决定了mpe的作用。这个逻辑背后的想法是,当你点击按钮我想启用mpe的某些部分并禁用其他部分。这是因为mpe有几个功能。

Aspx Button和UserControl

 <uc2:IMG ID="IMG1" runat="server" />
 <asp:Button ID="btnAddNewImg" runat="server" Text="Add New Image" onclientclick="ShowImgPopupScreen()"  />

Javascript功能

  <script type="text/javascript">
     function ShowImgPopupScreen() {
         // call server side method
         PageMethods.AddNewImg();
     }   
</script>

ASPX.CS代码

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static void AddNewImg()
    {
        string option = "add";
        image_loader_cms cms = new image_loader_cms();
        cms.SetButtons(option);

    }

    protected void SetButtons(string add)
    {
        if (add == "add")
        {
            IMG1.Add = true;


        }
        else
        {
            IMG1.Edit = true;

        }
    }

ASCX.CS

public bool Add
    {
        get
        {
            return btnAdd.Enabled;
        }
        set
        {
            btnAdd.Enabled = value;
        }
    }


    public bool Edit
    {
        get
        {
            return btnUpdate.Enabled;
        }
        set
        {
            btnUpdate.Enabled = value;
        }
    }

使用断点时代码会步入IMG1.Add = true;但在该行代码之后我会收到此错误消息。

Microsoft JScript运行时错误:Sys.Net.WebServiceFailedException: The server method 'AddNewImg'失败,并显示以下错误:

 System.NullReferenceException-- Object reference not set to an instance of an object.

这个问题让我摸不着头脑。

1 个答案:

答案 0 :(得分:1)

您正在创建一个新的用户控件,但它不会创建其子控件,或者在将其添加到控件树之前无论如何都可用,因此您的图像和按钮永远不会被创建。

由于您使用静态页面方法,我认为这不会起作用。

你真正试图用moethod页面中的用户控件做什么?