“系统.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.
你正在创建一个新的用户控件,但是它不会创建它的子控件,或者在任何情况下都可用,直到它被添加到控件树,因此你的图像和按钮永远不会创建。
既然你是在静态页面方法,我认为这是不会工作的
你到底想用page方法中的用户控件做什么?