ASP.NET 程序提交表單數據中帶有html標簽不能提交或者提交報錯問題


     今天在公司做另外的一個項目,又奇葩的遇到一個問題。

     在本地自己電腦上怎么測試都是正常的。但是先上服務器就出問題:

     用富文本編輯器上傳一篇文章,始終報錯,又沒提示具體什么錯誤,也沒說代碼錯誤,點擊提交按鈕后始終不會請求相應的后台事件方法。

     首先根據自己的經驗,想到是不是和之前遇到過的提交數據中含有html標簽而造成不能提交表單問題。

     然后直接在頁面加上:ValidateRequest="false"

     關鍵是加上后還是一樣的錯誤,這個我就有點不知所措了,只顯示個頁面出錯,寫了日志,查看日志,還是不能請求我的后台代碼。

     然后我把提交的數據全部寫死,傳入一個固定的值試一試(不帶有html的),注意假設頁面有富文本編輯器,富文本編輯器中最好不要填寫值。此時可以提交表單了。

     基本問題已經找到了,說明問題還是表單數據中含有html標簽,然后百度了一些,基本說的都是頁面加一個:ValidateRequest="false",這樣還是不能解決問題。

     后來終於解決問題,結果居然這么簡單,解決方法如下:

     在webconfig中進行修改:

                                  在節點httpRuntime內加入:requestValidationMode="2.0"

                                  在節點compilation內加入:targetFramework="4.0"

     即變成:           

              <httpRuntime requestValidationMode="2.0"/>
              <compilation debug="true" targetFramework="4.0"/>

     特別說明,網上好多說的都是加入requestValidationMode="2.0"即可,這個我試了是不行。原因是因為我的網站的.NET FrameWork版本是4.0的,所以這個根據自己網站的.NET FrameWork版本來修改。如果版本是4.0及其以上的必須兩個加入。

      總結,對於網站提交表單數據中含有html標簽不能提交的,如果網站.NET FrameWork版本是4.0及其以上的,需要在webconfig中加入:

               <httpRuntime requestValidationMode="2.0"/>
              <compilation debug="true" targetFramework="4.0"/>

      如果.NET FrameWork版本是4.0以下的,添加<httpRuntime requestValidationMode="2.0"/>即可。

      在此,也謝謝博客園里的各位朋友的評論,從你們的評論互動其實我也能學到許多東西,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM