AjaxControlToolkit 7.0123打破了UpdatePanel异步回发

时间:2013-04-06 14:46:53

标签: ajaxcontroltoolkit webforms asp.net-4.5

我在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时出现问题,但正如您将从标记中看到的那样我已经尝试删除这些它没有区别。)

0 个答案:

没有答案