2015-04-30 27 views
0

我開發了一個ASP.NET應用程序,使用.NET 3.5 framework,並部署在應用程序池DefaultAppPool中的IIS中。ASP.NET 4.0 Integrated PipeLine引發javascript錯誤

enter image description here

代碼:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Test.aspx.vb" Inherits="Sample.sample"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
    <HEAD> 
     <title>Test</title> 
     <META http-equiv="Content-Type" content="text/html; charset=windows-1252"> 
     <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> 
     <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE"> 
     <meta content="JavaScript" name="vs_defaultClientScript"> 
     <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> 
    </HEAD> 
    <body onload="document.frmTest.btnAdd.focus();"> 
     <form id="frmTest" method="post" runat="server"> 
      <input tabIndex="9" type="button" value="Add" name="btnAdd"> 
     </form> 
    </body> 
</HTML> 

它運行沒有了過去兩年的任何問題。

現在,我已經將應用程序池從DefaultAppPool更改爲ASP.NET v4.0 Integrated Pipeline模式IIS

enter image description here

應用程序引發錯誤

SCRIPT5007: Unable to get property 'btnAdd' of undefined or null reference 

enter image description here 注:我恢復應用程序池DefaultAppPool,應用程序運行沒有任何錯誤。

這個錯誤的原因是什麼?是否有任何設置需要修改以解決錯誤?

回答

2

更改代碼,改爲使用

document.forms['frmTest'].btnAdd.focus(); 

或指定name屬性的表單元素如下:

<form method="post" action="Default" name="frmTest"> 

當你改變了框架版本,.NET是可能增加額外的屬性到aspx頁面,因此代碼似乎與默認應用程序池一起工作.net框架2.0

更新:

原因是,在ASP.NET v4.0name屬性爲form標記不會在生成頁面時生成。

我們可以通過下面addding在應用程序的web.config文件

<pages controlRenderingCompatibilityVersion="3.5" /> 
+0

由於在<system.web>標籤設置解決這個問題。該原因是,在'ASP.NET v4.0'了'爲name'屬性「form」標籤沒有生成。在Web配置文件中是否有任何解決方法或設置來解決此錯誤,而無需更改代碼。因爲我需要更改許多文件。 –