我在VS2012中针对ASP.NET 4.5构建了一个ASP.NET Web应用程序。在应用程序中有许多包含ListView控件的表单,而这些控件又包含UpdatePanel控件,以便发生的任何编辑或添加的新数据都是异步执行的,如果用户刷新页面则不会重复。
直到今天这个工作正常。今天,我使用NuGet将最新版本的AjaxControlToolkit(7.0123)添加到项目中,并对脚本等进行了修改。as specified by Stephen Walther here。
自从AjaxControlToolkit引入项目以来,异步回发似乎已经变得同步。例如,如果我在ListView中编辑项目,当我按F5(在IE或Firefox中)时,系统会提示我将重新发送数据。
加价很简单......
<asp:ListView ID="LocationList" runat="server" ItemType="Model.Location" DataKeyNames="ID" InsertItemPosition="LastItem" DeleteMethod="LocationList_DeleteMethod" InsertMethod="LocationList_InsertMethod" SelectMethod="LocationList_SelectMethod" UpdateMethod="LocationList_UpdateMethod">
<LayoutTemplate>
<asp:UpdatePanel ID="ListViewUpdatePanel" runat="server">
<ContentTemplate>
<table class="table table-condensed table-striped">
<thead>
<tr>
<th runat="server">
<asp:LinkButton ID="SortByDescription" runat="server" CommandName="Sort" CommandArgument="Name" Text="Description" />
</th>
<th></th>
</tr>
</thead>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</table>
</ContentTemplate>
</asp:UpdatePanel>
<div class="pagination align-center">
<asp:DataPager runat="server" />
</div>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#: Item.Name %>
</td>
<td>
<asp:LinkButton ID="Edit" runat="server" CommandName="<%#: Global.CommandNames.Edit %>" CommandArgument="<%#: Item.ID %>" Text="Edit" />
</td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<asp:TextBox ID="Description" runat="server" Text="<%#: BindItem.Name %>" />
</td>
<td>
<asp:LinkButton ID="Update" runat="server" CommandName="<%#: Global.CommandNames.Update %>" Text="Update" />
<asp:LinkButton ID="Cancel" runat="server" CommandName="<%#: Global.CommandNames.Cancel %>" Text="Cancel" />
</td>
</tr>
</EditItemTemplate>
<InsertItemTemplate>
<tr>
<td>
<asp:TextBox ID="Description" runat="server" Text="<%#: BindItem.Name %>" />
</td>
<td>
<asp:LinkButton ID="Insert" runat="server" CommandName="<%#: Global.CommandNames.Insert %>" Text="Add" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
提供的标记位于ContentPanel内,页面使用MasterPage。 MasterPage具有如上所述的ToolkitScriptManager控件。
正如我已经说过的,在安装AjaxControlToolkit之前这很好用。
我还尝试更改页面布局,就像将UpdatePanel移动到整个ListView之外一样(然后将寻呼机放在UpdatePanel下);这没什么区别。
除了涉及AjaxControlToolkit的一些兼容性和/或配置问题之外,我完全不知道会导致这种情况。我找到了其他类似问题的引用,但我还没有找到任何有效的解决方案(例如,有些文章表明使用静态客户端ID时出现问题,但正如您将从标记中看到的那样我已经尝试删除这些它没有区别。)