1、直接用Response.Write()方法來輸出alert或者其他的js代碼時會影響到部分頁面樣式
因為Response.Write方法把<script>標籤輸出到了<DOCTYPE>標籤之前,導致了<DOCTYPE>標籤被忽略掉了,於是瀏覽器就把頁面當成一堆大雜燴的標籤(tag soup)而不是一個有效HTML文檔來解釋了,頁面的渲染模式變成了怪異模式(Quirks Mode)而不是標準的相容模式(Standards Compliance Mode),這樣就影響了HTML和CSS的解釋,因為瀏覽器試圖去模仿他的一個比較的版本,會產生許多怪異和錯誤。而且他還會給元素使用不同的預設樣式,這些原因就導致了最終的樣式問題。
這裡面有句話很重要,就是:<DOCTYPE>標籤前的任何東西都會導致<DOCTYPE>標籤被忽略掉。
方法一:把Response.Write()語句替換為這個
Page.RegisterStartupScript("ServiceManHistoryButtonClick", "<script>window.open('EquipmentHistory.aspx?eid=" + ServiceManDropDownList.SelectedValue + "');</script>");
這個方法用於在頁響應中發出用戶端指令碼塊,前一個參數是該Script在頁面中的唯一名稱(隨便起,不重複就行),後一個是指令碼內容。
這個方法應該是微軟官方推薦的方法。
方法二:在原程式的Response.Write()語句後再加一句
Response.Write("<script>document.location=document.location;</script>");
2、在ASP.NET中應用微軟AJAX技術,把GridView在UpdatePanel裡匯出Excel時會出現的錯誤。http://topic.csdn.net/u/20080412/14/502aaafd-609c-4063-bc5f-ee91cc9140a2.html解決方案:<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="True" EnableScriptLocalization="True"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<br/>
您自己的HTML代碼...
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<asp:LinkButton ID="lbtnExport2Excel" runat="server" OnClick="lbtnExport2Excel_Click">匯出Excel</asp:LinkButton>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="lbtnExport2Excel" />
</Triggers>
</asp:UpdatePanel>
3、GridView匯出Excel時重寫VerifyRenderingInServerForm方法http://blog.csdn.net/JeromeLvye/article/details/5250701隻要在發生異常,代碼的調度直接進入catch塊中,那麼我們自訂的輸出代碼就不會執行context.Response.Write(sw.ToString()),系統轉而把整個頁面都輸出來了,所有我們就會看到不需要的一些控制項也被匯出來了。通過 Wiz 發布