aps.net1.1下出现表单不能提交的问题

有一个asp.net应用,当它作为虚拟目录发布到IIS的时候,一切正常;当它作为网站发布到IIS的时候,它所有的表单都提交不了了,按钮按上去没有任何反应。

使用ieHTTPHeaders工具查看,发现点击按钮后没有发送任何消息给服务器端,初步确定应该是前台的问题,很可能是js的问题。检查了页面源代码,其本身的js应该不存在什么问题。于是打开ie的脚本调试程序,在form的onsubmit函数内加入断点:

js 代码
 
  1. onsubmit= "if (!ValidatorOnSubmit()) return false;"   
js 代码
 
  1. function  ValidatorOnSubmit() {  
  2.     if  (Page_ValidationActive) {  
  3.         return  ValidatorCommonOnSubmit();  
  4.     }  
  5.     return   true ;  
  6. }  

执行到

js 代码
 
  1. function  ValidatorCommonOnSubmit() {  
  2.     event.returnValue = !Page_BlockSubmit;  
  3.     Page_BlockSubmit = false ;  
  4. }  

发现它没有返回,相当于返回false,因此导致onsubmit返回false。

仔细检查了下,发现该应用下有一个目录aspnet_client\system_web\1_1_4322,正常情况下这个目录应该是在iis的根目录Inetpub\wwwroot下,在Inetpub\wwwroot下的WebUIValidation.js里该方法的代码为:

js 代码
 
  1. function  ValidatorCommonOnSubmit() {  
  2.     var  result = !Page_BlockSubmit;  
  3.     Page_BlockSubmit = false ;  
  4.     event.returnValue = result;  
  5.     return  result;  
  6. }  

而该应用下的WebUIValidation.js则为上面没有返回语句的代码。

js 代码
 
  1. "javascript"  type= "text/javascript"  src= "/aspnet_client/system_web/1_1_4322/WebUIValidation.js" >  


这样原因就很清楚了,当该应用作为虚拟目录发布的时候,页面引用的js是iis目录下的正确的js文件,所以不会有问题;当该应用作为网站发布的时候,页面引用了错误的js文件,因此无法提交。不清楚原作者为什么把aspnet_client\system_web\1_1_4322这个及其下面的文件放在应用里面,导致这个错误。

你可能感兴趣的:(asp.net)