ASP.NET 4.0 Integrated PipeLine 抛出 javascript 错误
ASP.NET 4.0 Integrated PipeLine throws javascript error
我使用 .NET 3.5 framework
开发了一个 ASP.NET
应用程序并部署在应用程序池 DefaultAppPool
的 IIS
中。
代码:
<%@ 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>
过去 2 年 运行 没有任何问题。
现在,我已经在 IIS
中将应用程序池从 DefaultAppPool
更改为 ASP.NET v4.0 Integrated Pipeline
模式。
应用程序抛出错误
SCRIPT5007: Unable to get property 'btnAdd' of undefined or null reference
注意:我已将应用程序池还原为 DefaultAppPool
,应用程序运行没有任何错误。
这个错误的原因是什么?是否需要更改任何设置来修复错误?
更改您的代码以改为使用
document.forms['frmTest'].btnAdd.focus();
或者为表单元素指定名称属性,如下所示:
<form method="post" action="Default" name="frmTest">
当您更改框架版本时,.net 可能会向 aspx 页面添加额外的属性,因此代码似乎适用于默认应用程序池 .net framework 2.0
更新:
原因是,在 ASP.NET v4.0
中,form
标记的 name
属性在呈现页面时未生成。
我们可以通过在应用程序 web.config
文件
的 <system.web>
标记中添加以下设置来解决此问题
<pages controlRenderingCompatibilityVersion="3.5" />
我使用 .NET 3.5 framework
开发了一个 ASP.NET
应用程序并部署在应用程序池 DefaultAppPool
的 IIS
中。
代码:
<%@ 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>
过去 2 年 运行 没有任何问题。
现在,我已经在 IIS
中将应用程序池从 DefaultAppPool
更改为 ASP.NET v4.0 Integrated Pipeline
模式。
应用程序抛出错误
SCRIPT5007: Unable to get property 'btnAdd' of undefined or null reference
DefaultAppPool
,应用程序运行没有任何错误。
这个错误的原因是什么?是否需要更改任何设置来修复错误?
更改您的代码以改为使用
document.forms['frmTest'].btnAdd.focus();
或者为表单元素指定名称属性,如下所示:
<form method="post" action="Default" name="frmTest">
当您更改框架版本时,.net 可能会向 aspx 页面添加额外的属性,因此代码似乎适用于默认应用程序池 .net framework 2.0
更新:
原因是,在 ASP.NET v4.0
中,form
标记的 name
属性在呈现页面时未生成。
我们可以通过在应用程序 web.config
文件
<system.web>
标记中添加以下设置来解决此问题
<pages controlRenderingCompatibilityVersion="3.5" />