Asp.net中使用javascrip的模態表單的一點體會。

來源:互聯網
上載者:User

        今天用Asp.net寫了個OA系統 [此句完全是原來發貼時的筆誤,應該是:今天終於把那個OA做完了,希望大家沒沒事找事老攻擊這句話。這不是本文的重點。],感覺寫起來,真麻煩,尤其是要不斷地彈出新增、修改的視窗,感覺每次敲代碼是一種痛苦。所以,稍稍總結了一下,將模組視窗的彈出丟在了一個公用類(Function)的方法裡面進行處理(其實早就該這麼做)。
      eg:
      public string ModalWindow(string openAspxPage,int width,int height)
      {
               string js = string.Format("javascript:window.showModalDialog(\"{0}\",window,\"status:false;dialogWidth:{1}px;dialogHeight:{2}px\")",openAspxPage,width,height);
              return js;
      }

      本來想用StringBuilder來寫的,可是StringBuilder寫起來實在麻煩,乾脆就換了string,反正影響不大。
       另外,又寫了一個關閉頁面的方法,寫得粗糙一些,將就著用吧。
      public string ClosePage()
      {
             StringBuilder js = new StringBuilder();
             js.Append("<script language=\"JavaScript\">");
             js.Append("window.close();");
             js.Append("</script>");
             return js.ToString();
      }

       項目中,除了添加、修改的頁面是Aspx,其它的都是ascx。
       感覺上,就是openApxPage的大小不太好控制,而且上面寫的代碼並不適合於DataGrid控制項中的LinkButton控制項,所以又得再寫一個方法重載了。

      使用模態視窗時,還得注意三個問題:
      1、要彈出的頁面中,一定要保證<head></head>標籤間有<base target=“_self”>,否則會彈出的模態視窗上,點擊按鈕時,會再次彈出一個新頁面。
      2、被彈出頁面的按鈕的事件處理中,應該有Response.Write(new Function().ClosePage());語句,用以關閉當前的模態視窗。
      3、因為幽默的緩衝原因,如果你在模態視窗中修改了資料,你會發現,父頁面上的資料重新整理了,但是當你再點擊按鈕,重新彈出模態視窗時,你會發現模態視窗中的內容還是上次的內容,經過我實驗,手動改了html代碼後,點擊彈出的模態視窗還是彈出相同的頁面,所以,這裡要繞開這個機制,方法是在被彈出的aspx頁面後加上隨機參數。上面模態視窗代碼可以改成如下,以避免此問題:

      public string ModalWindow(string openAspxPage,int width,int height)
      {
               string js = string.Format("javascript:window.showModalDialog(\"{0}&rand="+new Random().Next().ToString()+ "\",window,\"status:false;dialogWidth:{1}px;dialogHeight:{2}px\")",openAspxPage,width,height);
              return js;
      }
   
      注意紅字部分參數,是自訂的一個參數,此參數應該是整個項目中唯一的變更名稱,並且無意義(最保險的辦法是把這個變更命名為lakjsdflawdfqwoifa之類的名稱)。
      基本上,滿足了上述條件,做頁面時就操作模態視窗,相對就簡單了。
      如果還想做得簡單一些,可以把ModalWindow 方法寫得更完善一些,因為時間較緊,所以這裡的東西比較粗糙。有空時,把它改一下,並完善一下Function類的內容,增加一些常用的JavaScript的代碼,讓它成為可配置的資料。
     對了,有空時應該把什麼“有聲有色“之類的軟體裡內建的JavaScript代碼改動一下,重新做一個專門的JavaScript特效.net類庫,到時好用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.