1. 程式人生 > >ASP.NET 最近WEB開發遇到的小問題

ASP.NET 最近WEB開發遇到的小問題

最近在做web開發中遇到的小問題進行下總結:

1.在做WEB頁面見傳值過程中,發現中文內容直接傳值會出現亂碼現象,如:

   function ViewTicketReportInfo(data) {
            var time = $("#txt_DateMonth").val();
            var url = "../OrderReport/DayTicketHistogram.aspx?round=" + Math.random() + "&CustomerName=" + data+ "&Time=" + time;
            var ws = 1100;
            var sw = 500;
            var winS = "dialogWidth:" + ws + "px;dialogHeight:" + sw + "px;alwaysRaised:yes;center:yes;status:no;help:no;z-look:yes;dialogTop:no;scroll:no";
            window.showModalDialog(url, window, winS);
        }

這個模態視窗在傳送值過程中,data的值可能會在DayTicketHistogram.aspx頁面無法正常獲取到,導致後臺的查詢或其他操作,由於引數不當的問題出現問題.

解決方法:

就是在傳輸引數的時候使用escape() 方法進行編譯下,是使值適應於WEB傳送的格式,使得指定頁面能正常獲取到值.

2.最近在多次使用模組視窗中發現一個問題  瀏覽器相容性問題 如chome瀏覽器等

  var url = "../OrderReport/GetSalePointNameList.aspx?round=" + Math.random();
            var ws = 730;
            var sw = 550;
            var winS = "dialogWidth:" + ws + "px;dialogHeight:" + sw + "px;alwaysRaised:yes;center:yes;status:no;help:no;z-look:yes;dialogTop:no;scroll:no";
            var tpValue = window.showModalDialog(url, window, winS);

if(tpValue !=""||tpValue !=null){

$("#textSalePointName").val(tpValue);

}

上面這段程式碼 如果是執行在IE瀏覽器是沒有什麼問題的,因為IE對showModalDialog進行了處理,只會彈出一個模組視窗,操作完成關閉後才可以操作其他的.但如果在chome或其他瀏覽器中時,就會出現問題.

比如: 假設你的模組視窗存在翻頁功能時,當你進行完翻頁操作是沒問題的,但是如果你想傳遞翻頁後資料中的一條記錄內容到父頁面時會獲取不到,其原因就是chome瀏覽器對showModalDialog窗體解析時是將窗體進行opener操作的,所以在chome中可以在模組視窗沒有關閉的情況下,還是可以對父窗體進行操作.

解決方法:

在指定模組視窗中新增程式碼:

 if (window.opener != undefined) {
                                window.opener.returnValue = result;
                            } else {
                                window.returnValue = result;
                            }

表示判斷視窗開啟方式並對各種開啟方式返回值都進行賦值.

父窗體則加入

            if (tpValue == undefined) {
                tpValue = window.returnValue;
               window.returnValue = "";//如果開啟模組視窗  什麼都沒有操作 直接關閉  會使頁面將上次操作的值進行返回給父窗體所以進行清空操作,可以根據需求新增這句話
            }
            if (tpValue != undefined) {
                $("#textSalePointName").val(tpValue);
            }