2011-11-17 97 views
0

我有一個ModalPopupExtender(mpe),它會在單擊asp:按鈕時顯示。該按鈕調用一個JavaScript函數,然後調用webmethod。 webmethod位於頁面後面的代碼中。」System.NullReferenceException - 對象引用未設置爲對象的實例。「 Webmethod,用戶控件

webmethod將字符串變量傳遞給後面代碼中的另一個方法。它決定了mpe的功能。這個邏輯背後的想法是,當你點擊按鈕時,我想啓用MPEG的某些部分並禁用其他部分。這是因爲mpe有幾個功能。

.aspx的按鈕和用戶控件

<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;使用斷點時,但該行的代碼後,我收到此錯誤信息。

微軟JScript運行時錯誤:Sys.Net.WebServiceFailedException: The server method 'AddNewImg'失敗,出現以下錯誤:

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

這個問題我抓我的頭。

+1

我認爲IMG1 == null – Reniuz

+0

可能重複[什麼是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –

+0

Do我必須創建一個用戶控件的新實例? –

回答

1

您正在創建一個新的用戶控件,但是它不會創建其子控件或無論如何都可用,直到它被添加到控件樹中,因此您的圖像和按鈕永遠不會創建。

既然你在靜態頁面的方法,我不認爲這會工作。

你實際上試圖從頁面moethod的用戶控件做什麼?

+0

從頁面方法我想要啓用一個添加按鈕,並根據我通過什麼變量基於用戶控制禁用編輯按鈕。我們的系統使用用戶控件,這也是我使用它們的原因。我將如何創建子控件? –

+1

如果您使用的是ajax,那麼您的用戶控件已經被渲染,並且這種方法不起作用。您應該通過ajax調用來獲得指示是否啓用了添加按鈕的結果,然後使用客戶端腳本啓用/禁用按鈕本身。或者使用[更新面板](http://ajax.net-tutorials.com/controls/updatepanel-control/)。 –

+0

我會嘗試更新面板,看看它是如何工作的。感謝您的建議。 –

相關問題