我有一个简单的ASP.NET UpdatePanel,当我运行Visual Studio(Casini)时,它会按预期工作。
但是,一旦部署到我的本地IIS,它就不再起作用了。
什么配置错误?
我的代码:
<!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">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
</div>
<input id="Text1" type="text" />
</form>
</body>
</html>
...和代码隐藏:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Presentation.Web
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
}
}
在Casini中,标签更新时没有回发。在IIS上,发生回发。
答案 0 :(得分:1)
在web.config文件的“处理程序”部分中添加以下行:
<add name="Ajax" verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
答案 1 :(得分:0)
ASP.NET AJAX要求网页与XHTML兼容(不是HTML 4.0)。实际上,在web.config中没有mode = Transitional会阻止scriptManager甚至在页面中呈现,并且每个AJAX命中都会像常规的回发一样。
放入web.config xhtmlConformance mode =“Transitional”/&gt;