现在我正在研究一个需要Ajax的ASP.NET Web应用程序。阅读this tutorial后,我尝试在Visual Studio 2005中运行以下代码,在通过右键单击工具箱并单击“选择项目...”添加必要的控件后:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text += "<br/>" + DateTime.Now.ToString();
}
但由于某种原因,该页面无法与Ajax一起使用。当我单击按钮时,页面刷新并显示带有更新值的标签。我发现此代码没有任何问题,所以我尝试在Visual Studio 2010中打开相同的项目并运行它。这次它奏效了! (标签已使用当前日期更新,但未刷新页面)
什么可以阻止此代码在Visual Studio 2005中运行?
谢谢, 伊塔马尔
答案 0 :(得分:0)
您的 UpdatePanel的UpdateMode 可能设置为conditional
,您必须指定trigger
。
或者,您可以将属性ChildrenAsTriggers
定义为true
。
参考http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.updatemode.aspx
我在你的页面上找不到任何注册表吗?你有没有注册?如果没有尝试添加这个
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
答案 1 :(得分:0)
4GuysFromRolla声明Visual Studio 2005针对的是2.0 .NET应用程序,这可以解释为什么AJAX程序集的v3.5不起作用(http://www.4guysfromrolla.com/articles/112107-1.aspx) 。但Charles Young与此相矛盾(http://geekswithblogs.net/cyoung/archive/2007/12/01/117279.aspx)。
答案 2 :(得分:0)
我相信在VS 2005中对AJAX的支持是有限的。请尝试使用ToolkitScriptManager
代替,看看是否有帮助。
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true"></cc1:ToolkitScriptManager>