“系统.NullReferenceException——对象引用未设置为对象的实例."Webmethod,用户

本文关键字:quot 实例 Webmethod 用户 对象 NullReferenceException 系统 对象引用 设置 | 更新日期: 2023-09-27 18:14:52

我有一个ModalPopupExtender(mpe),这将显示当一个asp:按钮被点击。这个按钮调用一个javascript函数,然后调用一个webmethod。webmethod在页面后面的代码中。

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

Aspx Button and UserControl

 <uc2:IMG ID="IMG1" runat="server" />
 <asp:Button ID="btnAddNewImg" runat="server" Text="Add New Image" onclientclick="ShowImgPopupScreen()"  />
<<p> Javascript函数/strong>
  <script type="text/javascript">
     function ShowImgPopupScreen() {
         // call server side method
         PageMethods.AddNewImg();
     }   
</script>
<<p> ASPX.CS代码/strong>
[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 runtime error: Sys.Net.WebServiceFailedException: The server method 'AddNewImg' failed with以下错误:

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

“系统.NullReferenceException——对象引用未设置为对象的实例."Webmethod,用户

这个问题真让我挠头。

你正在创建一个新的用户控件,但是它不会创建它的子控件,或者在任何情况下都可用,直到它被添加到控件树,因此你的图像和按钮永远不会创建。

既然你是在静态页面方法,我认为这是不会工作的

你到底想用page方法中的用户控件做什么?