我正在尝试使用UpdatePanel,但无法使部分页面更新起作用。
当我查看ScriptManager的IsInAsyncPostBack属性时,它总是错误的。
这是一个重现问题的页面。它有一个ScriptManager,一个UpdatePanel,一个更新面板中的LinkButton,以及一个通过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总是假的吗?
答案 0 :(得分:9)
web.config文件有&lt; xhtmlConformance mode =“Legacy”/&gt; 。设置传统模式后,部分页面更新不起作用。 (事实上,他们默默地失败了 - BOO!HISS!)
将模式更改为Transitional可解决此问题。