彈出對話框的同時保持頁面的顯示
2024-07-21 02:16:31
供稿:網友
 
,歡迎訪問網頁設計愛好者web開發。在csdn上經常看到大家討論如何在asp.net中用后臺代碼中彈出對話框的問題,一般的解決辦法就是用response.write寫一段腳本代碼來彈出對話框,可問題是當對話框彈出后,頁面卻一片空白。這里講述的辦法就是在彈出對話框的同時保持頁面的顯示。(其它辦法如registerclientscriptblock()、registerstartupscript()也有一些限制,就不多說了)
 
【原理】
在頁面上放置一隱藏控件,并在頁面最后放上一段腳本代碼,腳本代碼檢測隱藏控件的value是否為空,若不為空則彈出對話框顯示信息,否則什么也不做。
后臺代碼在需要的時候修改隱藏控件的value,這樣當頁面傳到用戶那時,最后的腳本代碼將執行并彈出對話框。
 
【注意事項】
1. 隱藏控件必須是html控件,否則javascript無法找到。
2. 后臺代碼要修改隱藏控件的值,隱藏控件自然得加上runat=”server” 標記。
3. 在彈出對話框后,記得把隱藏控件的value置空,否則刷新的時候又會彈出來了。
4. 腳本代碼一定得放在隱藏控件的后面,否則同樣找不到。
 
【實現】
頁面代碼(只列出body)
<body ms_positioning="gridlayout">
 <form id="form1" method="post" runat="server">
 <asp:textbox id="manuinput" runat="server"></asp:textbox>
 <asp:button id="button1" runat="server" text="對話框"></asp:button>
<input id="passtxt" type="hidden" runat="server"><!—隱藏控件à
 </form>
 <script language=javascript>
 if( document.all("passtxt").value!="" )
 {
 alert( document.all("passtxt").value );
 document.all("passtxt").value=""; //這句可不能掉喲!
 }
 </script>
 </body>
后臺代碼(只列出button1的響應事件)
private void button1_click(object sender, system.eventargs e)
 {
 passtxt.value = manuinput.text;
 }
【效果】
【補充說明】
其實這個方法很簡單,不過卻很有效,你可以寫一個函數showdialog(string str),然后在后臺代碼中任何需要的地方調用以彈出對話框。
此外,你還可以把alert換成showmodeldialog(),以彈出功能更豐富,界面更漂亮的窗口。
最后,必須得說明的是,這個方法的思想可以用來在腳本和后臺代碼之間傳遞信息,我在我的web application中就是這樣做的,效果很好。
 
第一次發文檔,不足之處大家也就見諒見諒了:)