ASP.NET使用div runat=server取代showModalDialog

以往小喵寫ASP的時候,由於都是HTML與JavaScript的配合,有時候會需要開啟一個視窗,然後取得Server端的資料,再帶入畫面中,例如:瀏覽→下拉選取使用者→傳回

這個時候,開新視窗的方式可以用window.open或者window.showModalDialog,其中showModalDialog可以避免使用者點選到別的畫面造成新視窗沉到下面,感覺還蠻好用的。

隨著時光飛逝,目前用ASP.NET開發,而使用者的IE也漸漸的改成IE7,這時候發現showModalDialog有以下幾個問題點

  1. 因為ASP.NET都是用Server端控制項與程式配合PostBack。這時要處理像以往的動作就沒麼好用了
  2. IE7中的showModalDialog運作submit的時候會出現問題

 


 

我們舉個例子來看,我安排兩個aspx分別為t1.aspx,t2.aspx

  1. 要用t1.aspx按了個按鈕,使用showModalDialog開啟t2.aspx
  2. t2.aspx中透過Server端的按鈕取得時間放入TextBox1裡面,然後透過第二顆按鈕把資料傳回t1.aspx
  3. t1.aspx接收到資料後,透過Client端的Script寫到Table裡面的某個td裡面

t1.aspx內容

t2.aspx內容

t2.aspx.vb內容

其中t2.aspx裡面設定了<base target="_self">是為了解決Server控制項會造成開啟視窗,
因為Server控制項的按鈕,編譯之後一律都是submit,而這會讓他又開啟另外一個新視窗
不過如果您使用的是IE7的話,您會發現在IE7的時候,無論是否有<base target="_self">都會開啟新視窗,當然這個問題也不是不能解決(有個大絕招,請看備註1)

這樣的過程還蠻麻煩的,因此小喵建議可以用div加上runat=server的方式來替代,以下舉個例子

tdiv1.aspx內容如下

其中的<div id=divS1 runat="server">透過style的設定把它設定為絕對位置,並且預設visiable="false"

接著看tdiv1.aspx.vb的內容

透過divS1的visiable設定來模擬showModalDialog的開啟與關閉,而且所有動作都是Server端的,程式簡潔易懂

如果本來的動作有很多畫面都會用到的話,那麼還可以搭配WebUserControl來達到程式共用的目的
也可以避免showModalDialog控制不易以及IE7的問題。

提供大家參考

 


 

備註1.在IE7中解決Submit會開啟新視窗的方式,就是使用切frame的網頁,例如,本來開啟的是t2.aspx,現在改為t2m.html裡面切frame一個是本來的t2.aspx另外一個隱藏起來t2p.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值