http://blog.csdn.net/daidailiuhome/article/details/6079211
版權聲明:本文爲博主原創文章,未經博主允許不得轉載。
將頁面上的gridview導出到excel中時會遇到這樣一個問題:“只能在執行 Render() 的過程中調用 RegisterForEventValidation”
解決的方法有兩種:
第一種:在Web.Config文件中:在<system.web></system.web>標記中添加如下代碼:<不推薦>
<system.web>
<pages enableEventValidation="false"> </pages>
</system.web>
(驗證該方法可行) 第二種:在具體的.aspx頁面的源代碼中修改代碼,如下:
<%@ Page Language="C#" Inherits=" OutputData" AutoEventWireup="true" CodeFile=" OutputDataThree.aspx.cs" EnableEventValidation="false"%>
EnableEventValidation 默認值爲true,它將啓動事件驗證。此功能驗證回發或回調事件的參數是否來源於最初呈現這些事件的服務器控件。
另外,如果頁面含有一個linkbutton,並在後臺創建對應的Click事件處理程序,此時想要將頁面的table導出到excel時,也會報出上述同樣的錯誤,此時解決方法有兩種:
第一種:在Click事件處理中,將linkbutton的Visible設置成false
第二種:設置<@Page EnableEventValidation="false">
修改完畢後再次運行程序,又可以正確響應事件。關於出現的異常,可以認爲在輸出時候沒有包含linkbutton,可是再提交到後臺的時候卻有相應的內容,前後不一致,所以在開啓事件校驗的情況下.NET拋出了異常。