0

我已经开发了一个ASP.NET应用程序,使用.NET 3.5 framework并部署在IIS应用程序池中DefaultAppPool

在此处输入图像描述

代码:

<%@ 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 年中运行没有任何问题。

现在,我已将应用DefaultAppPool程序池从ASP.NET v4.0 Integrated Pipeline.IIS

在此处输入图像描述

应用程序抛出错误

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

在此处输入图像描述 注意:我已将应用程序池恢复为DefaultAppPool,应用程序运行时没有任何错误。

这个错误的原因是什么?是否有任何设置要更改以修复错误?

4

1 回答 1

2

更改您的代码以改为使用

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

或者为表单元素指定 name 属性,如下所示:

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

当您更改框架版本时,.net 可能会向 aspx 页面添加其他属性,因此代码似乎可以与默认的应用程序池 .net 框架 2.0 一起使用

更新:

原因是,在渲染页面时没有生成标签ASP.NET v4.0name属性。form

我们可以通过在应用程序文件的<system.web>标签中添加以下设置来解决此问题web.config

<pages controlRenderingCompatibilityVersion="3.5" />
于 2015-04-30T09:59:44.543 回答