ScriptManager.RegisterClientScriptBlock的疑問

來源:互聯網
上載者:User

  ScriptManager.RegisterClientScriptBlock:

      MSDN中對這個方法的解釋為:

向 ScriptManager 控制項註冊一個用戶端指令碼塊,以便和 UpdatePanel 控制項中的某個控制項一起使用,然後將該指令碼塊添加到頁面中。

      大概的意思不難理解。下面看這段代碼:

<asp:ScriptManager ID="ScriptManager1" runat="server"><br /> </asp:ScriptManager></p><p> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"><br /> <ContentTemplate><br /> <asp:Button ID="Button2" runat="server" Text="一個Button" OnClick="Button2_Click" /><br /> <cc1:ConfirmButtonExtender ID="ConfirmButtonExtender1" TargetControlID ="Button2" ConfirmText ="你確認提交嗎?" runat="server"><br /> </cc1:ConfirmButtonExtender><br /> </ContentTemplate><br /> </asp:UpdatePanel>

頁面上有一個updatePanel,裡面放了一個button和一個ConfirmButtonExtender控制項。

並將button的ID付給 ConfirmButtonExtender的TargetControlID。

 

後台代碼:

 

protected void Button2_Click(object sender,EventArgs e)<br /> {<br /> ScriptManager.RegisterClientScriptBlock(Button2, typeof(Button), "commit", "alert('已經確認!')", true);<br /> Button2.Text = "按鈕已經改變";<br /> }

 

可以看到alert('已經確認!') 是在Button2_Click中"註冊"的。

效果:  點擊button彈出確認視窗.

點確認後Button的Text變為“按鈕已經改變”,點取消什麼也不發生。

奇怪的是無論你把 Button2.Text這句放在ScriptManager這句前面還是後面都是點確認後Button的Text才會改變,打個斷點調試下也證明Button2_Click事件是在確認後才觸發的。

問題就是:

1.為什麼ScriptManager這句要放在Button2_Click事件中呢?

2.同樣的一個單擊事件,用在Page_Load中加入Button2.Attribute.Add("onclick","<script>alert('已經確認!')</script>");的方法為什麼就不行呢?

-----------------------------------------------------分割線-------------------------------------------------

基本上講一但一個控制項被扔進了UpdatePanel中 給它綁定一個用戶端Script代碼就不行用普通的方式了。

我們將上面的代碼簡化下:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"><br /> <ContentTemplate><br /> <asp:Button ID="Button1" runat="server" Text="你給我彈個看看 "/><br /> </ContentTemplate><br /></asp:UpdatePanel>

然後在後台中寫上:

protected void Page_Load(object sender, EventArgs e)<br />{<br /> Button1.Attributes.Add("onclick", "<mce:script type="text/javascript"><!--<br />callit();<br />// --></mce:script>");<br />}

運行後照樣是提示javascript出錯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.