2010-05-10 48 views
0

我有一個非常簡單的AJAX示例,不起作用。 它來自微軟的AJAX教程。ASP.NET AJAX無效

當我點擊按鈕「Button1」AJAX應該執行,但整個頁面提交。

下面是代碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="1111.aspx.cs" Inherits="_1111" %> 
<%@ 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></title> 
</head>  
<body>  
    <form id="form1" runat="server">  
    <p>  
    DropDownList AutoPostBack SelectedIndexChanged EventArgs Sort ... Since you will  
    be using AJAX to process your SelectedIndexChanged event, set the AutoPostBack property  
    of the DropDownList to false. ...</p>  
    <div>  

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">  
    </asp:ScriptManager>  
    <asp:Label ID="label2" runat="server"></asp:Label><br /> 
    <asp:Label ID="label3" runat="server"></asp:Label><br />  
    <center>  
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">  
     <ContentTemplate>  
     <asp:Label ID="label1" runat="server"></asp:Label>  
     <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button 1" />  
     </ContentTemplate>  
     <Triggers>  
     <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />  
     </Triggers>  
    </asp:UpdatePanel> 
    </center>  
    </div>  
    </form>  
</body>  
</html> 

代碼隱藏:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.UI;  
using System.Web.UI.WebControls;  

public partial class _1111 : System.Web.UI.Page  
{  
    protected void Page_Load(object sender, EventArgs e) 
    {  
     label1.Text = System.DateTime.Now.ToString();  
     label2.Text = System.DateTime.Now.ToString();  
     label3.Text = System.DateTime.Now.ToString();  
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    {  
     label1.Text = System.DateTime.Now.ToString();  
    }  
} 
+3

不想成爲一個nitpicky語言納粹類型,但你的標題是非常錯誤的。 Asp.Net AJAX非常有效,因爲數百萬開發人員每天都在使用它。更具體地說,您安裝的ASP.net AJAX不起作用,但即使這樣也可能是錯誤的,因爲它可能是配置錯誤的服務器,編碼錯誤,禁用腳本的瀏覽器或任何導致問題的其他數目的事情。例如,一個*更好的標題應該是「ASP.NET AJAX代碼仍然會導致完整的回發」。 – Serapth 2010-05-10 02:29:21

+0

您是否收到任何類型的javascript錯誤? – 2010-05-10 02:30:40

+0

justed將您的代碼粘貼到VS2008中的asp.net ajax項目中,並且回調不回發,即按預期工作 – 2010-05-10 02:34:10

回答

1

我想你是誤會在Page_Load事件,這將永遠火,甚至爲部分後背上,。您可以通過使任何初始化代碼有條件來處理該問題,如下所示:

if (!IsPostBack) { 
    label1.Text = System.DateTime.Now.ToString();  
    label2.Text = System.DateTime.Now.ToString();  
    label3.Text = System.DateTime.Now.ToString();  
}