Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;System.NullReferenceException—对象引用未设置为对象的实例;Webmethod,用户控制_C#_Asp.net_User Controls_Webmethod - Fatal编程技术网

C# &引用;System.NullReferenceException—对象引用未设置为对象的实例;Webmethod,用户控制

C# &引用;System.NullReferenceException—对象引用未设置为对象的实例;Webmethod,用户控制,c#,asp.net,user-controls,webmethod,C#,Asp.net,User Controls,Webmethod,我有一个ModalPopupXtender(mpe),它将在单击asp:按钮时显示。该按钮调用javascript函数,然后该函数调用webmethod。webmethod位于页面的代码后面 webmethod将字符串变量传递给代码隐藏中的另一个方法。这决定了mpe的功能。这个逻辑背后的想法是,当你点击按钮时,我想启用mpe的某些部分,禁用其他部分。这是因为mpe具有多种功能 Aspx按钮和用户控件 <uc2:IMG ID="IMG1" runat="server" /> <

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

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

Aspx按钮和用户控件

 <uc2:IMG ID="IMG1" runat="server" />
 <asp:Button ID="btnAddNewImg" runat="server" Text="Add New Image" onclientclick="ShowImgPopupScreen()"  />
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.webservicecfailedexception:服务器方法“AddNewImg”
失败,出现以下错误:

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

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

您正在创建一个新的usercontrol,但是在添加到控件树之前,它不会创建其子控件或以任何方式可用,因此您的图像和按钮永远不会被创建

因为您使用的是静态页面方法,所以我认为这是行不通的


您实际上想对页面方法中的用户控件做什么?

在页面方法中,我想根据我传递的变量启用添加按钮并禁用基于用户控件的编辑按钮。我们的系统使用用户控件,这就是为什么我也使用它们。如何创建子控件?如果您使用ajax,那么您的用户控件已经呈现,这种方法将不起作用。您应该通过ajax调用获得指示是否启用了add按钮的结果,然后使用客户端脚本启用/禁用按钮本身。或者使用。我将尝试更新面板,看看它是如何工作的。感谢您的建议。我最终使用了一个更新面板和部分回发来修改ModalPopupXtender用户控件上使用的按钮的属性。是否需要创建用户控件的新实例?
public bool Add
    {
        get
        {
            return btnAdd.Enabled;
        }
        set
        {
            btnAdd.Enabled = value;
        }
    }


    public bool Edit
    {
        get
        {
            return btnUpdate.Enabled;
        }
        set
        {
            btnUpdate.Enabled = value;
        }
    }
 System.NullReferenceException-- Object reference not set to an instance of an object.