UpdatePanel不执行部分页面更新,并且IsInAsyncPostBack始终为false

时间:2010-02-08 23:43:32

标签: asp.net updatepanel scriptmanager xhtml

我正在尝试使用UpdatePanel,但无法使部分页面更新起作用。

当我查看ScriptManager的IsInAsyncPostBack属性时,它总是错误的。

这是一个重现问题的页面。它有一个ScriptManager,一个UpdatePanel,一个更新面板中的LinkBut​​ton,以及一个通过Triggers集合连接到UpdatePanel的Button。

<%@ Page Language="C#" %>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {

        Label1.Text = DateTime.Now.ToString();

        if (IsPostBack)
            Label1.Text += " - Postback!";
        if (ScriptManager1.IsInAsyncPostBack)
            Label1.Text += " - Async!";
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
    <form id="form1" runat="server">
            <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server"  />

            <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
                <ContentTemplate>Panel 1:<asp:Label runat=server ID=Label1 /><br />
                <asp:LinkButton runat=server ID="LinkButton1" Text="Update!"></asp:LinkButton></ContentTemplate>
                <Triggers><asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /></Triggers>
            </asp:UpdatePanel>
            <asp:Button ID="Button1" Text="Refresh Panel 1" runat="server" UseSubmitBehavior=false />

    </form>
</body>
</html>

如果我运行此代码并单击其中一个按钮,我会看到“Panel 1:2/8/2010 3:38:41 PM - Postback!”

我预计单击任一按钮会导致UpdatePanel1的部分页面更新,IsInAsyncPostBack将为true,并且“ - Async!”将附加到Label1。

知道为什么IsInAsyncPostBack总是假的吗?

1 个答案:

答案 0 :(得分:9)

web.config文件有&lt; xhtmlConformance mode =“Legacy”/&gt; 。设置传统模式后,部分页面更新不起作用。 (事实上​​,他们默默地失败了 - BOO!HISS!)

将模式更改为Transitional可解决此问题。

http://weblogs.asp.net/scottgu/archive/2006/12/10/gotcha-don-t-use-xhtmlconformance-mode-legacy-with-asp-net-ajax.aspx