关于asp:ScriptManager与Script代码块的位置关系问题

在学校Ajax时遇到了一个小问题,先来看一下原来的代码:
 1<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MSDNWebCast_20070621.WebForm1" %>
 2
 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5<html xmlns="http://www.w3.org/1999/xhtml" >
 6<head runat="server">
 7    <title>Untitled Page</title>
 8    <script language="javascript" type="text/javascript">
 9    Type.registerNamespace('Demo');
10    
11    Demo.Person = function(firstName, lastName, emailAddress)
12    {
13        this._firstName = firstName;
14        this._lastName = lastName;
15        this._emailAddress = emailAddress;
16    }

17
</script>
18</head>
19<body>
20    <form id="form1" runat="server">
21    <asp:ScriptManager ID="ScriptManager1" runat="server">
22    </asp:ScriptManager>
23    <div>
24    
25    </div>
26    </form>
27</body>
28
29</html>
30
在运行时会弹出如下图所示的错误:

然后我就纳闷了,怎么会这样?很是郁闷~~!其实我们只要把<Script>代码块放到asp:ScriptManager的后面,问题就解决了。
正确的代码如下:
 1<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MSDNWebCast_20070621.WebForm1" %>
 2
 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5<html xmlns="http://www.w3.org/1999/xhtml" >
 6<head runat="server">
 7    <title>Untitled Page</title>
 8</head>
 9<body>
10    <form id="form1" runat="server">
11    <asp:ScriptManager ID="ScriptManager1" runat="server">
12    </asp:ScriptManager>
13    <div>
14    
15    </div>
16    </form>
17</body>
18<script language="javascript" type="text/javascript">
19    Type.registerNamespace('Demo');
20    
21    Demo.Person = function(firstName, lastName, emailAddress)
22    {
23        this._firstName = firstName;
24        this._lastName = lastName;
25        this._emailAddress = emailAddress;
26    }

27
</script>
28</html>
29
个人分析原因可能是浏览器在解析文档时是顺序解析的,所以在asp:ScriptManager之前代码是不认识Type为何物的。自然就会报错,说Type未定义。因此我们在以后添加Javascript代码时要注意放到asp:ScriptManager的后面。

posted on 2008-05-09 22:00  啊不才  阅读(1017)  评论(0编辑  收藏  举报

导航