2012-03-30 85 views
0

任何線索爲什麼按鈕單擊事件不能成功插入腳本?從updatepanel事件中調用時,Javascript插入不會顯示

這是非常簡單的代碼。

C#:

public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e){ 
     ClientScript.RegisterStartupScript(Page.GetType(), "scriptalert", "<script type=\"text/javascript\">alert('testLOAD');</script>;", false); 
     btnAdd.Click += new EventHandler(btnAdd_Clicked); 
} 

protected void btnAdd_Clicked(Object sender,System.EventArgs e){ 
    ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false); 
} 

}

HTML:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
<script type="text/javascript"> 
alert("testSCRIPT"); 

function func() { 
    alert("testFUNC"); 
} 
</script> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:ScriptManager ID="ToolkitScriptManager1" runat="server" /> 
    <div id="View" style="height: 50%; width:20%; "> 
     blahblahblah 
    </div> 
    <div id="Addd" style="height: 50%; width:100%;"> 
     <asp:UpdatePanel ID="UpdateAdd" runat="server"> 
      <ContentTemplate> 
       <asp:Button ID="btnAdd" runat="server" Text="Add" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
</asp:Content> 

在頁面加載,我得到兩個警報發射,即 「testLOAD」 和 「testSCRIPT」,但是當我按下按鈕什麼都沒有發生(應該是第三個警報)......檢查調試器,事件被調用並運行,但是當我查看頁面源時沒有插入任何東西。

我懷疑這個問題可能存在於其他地方,因爲複製粘貼到沒有母版頁(即沒有ASP:內容標籤)的新頁面中。儘管如此,我還沒有遇到其他腳本插入的問題,爲什麼這個呢?

回答

0

我發現了什麼是錯的^^

有劇本我被插入,這使得它打破內流浪分號:/

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false); 

這樣一個愚蠢的錯誤造成這麼多的無奈。 .. 對不起大家!

1

問題出現在更新面板中有按鈕。爲了克服這個問題,我認爲你可以使用ScriptManager而不是ClientScript.RegisterStartupScript方法。像下面的東西應該做到這一點;的

ToolkitScriptManager1.RegisterStartupScript(this, typeof(Page), UniqueID, "<script type=\"text/javascript\">func();</script>;", true); 

代替

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false); 
+0

我有另一個頁面,這可以在更新面板內正常工作試過這段代碼,它說'RegisterStartupScript'不能從實例中調用,我認爲它是一個靜態方法。使用'ScriptManager'而不是'ClientScript'也不能解決問題。 – Oofpez 2012-04-02 09:54:05

0

你應該嘗試這樣的事情

字符串腳本= 「警報( '東西');」;

this.ClientScript.registerclientscriptblock(this.GetType(),「scriptfunc」,script,true);

或將您的函數放置在page_load事件中並在Button.OnClientClick屬性中調用該函數。

+0

使用OnClientClick在這種情況下沒有用,因爲我想在後面的代碼中運行內容,然後執行javascript。儘管它確實以這種方式調用函數,但JavaScript會在我需要之前運行。 – Oofpez 2012-04-02 07:52:23

相關問題