2011-03-08 122 views
0

最近,我将解决方案升级到4.0,并且所有内容似乎都能够顺利升级,但是对于ASP.NET AJAX而言。UpdatePanel AsyncTriggers在升级到4.0后无法正常工作

我有一个UpdatePanel像这样:

<asp:UpdatePanel ID="pnlAdvSearch" UpdateMode="conditional" runat="server"> 
    <ContentTemplate> 
     <asp:Button ID="btnHidden" Runat="server" OnClick="btnHidden_Click" 
       ClientIDMode="Static"/> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnHidden" EventName="Click"/> 
    </Triggers> 
</asp:UpdatePanel> 

我有一个预先输入文本框触发上单击btnHidden_Click事件/输入等。我呼吁文本框点击下面的方法/输入。

function getSelectionId() {  
     __doPostBack(
      '<%=btnHidden.ClientID%>', 
      document.getElementById('<%=txtLocation.ClientID %>').value 
    ); 
     theForm.__EVENTARGUMENT.value = ""; 
    } 

我可以看到一个回发发生和Page_Load执行。但是,服务器端btnHidden_Click永远不会被解雇。我不想在页面级别禁用事件验证。我在这里做错了什么? (

回答

0

这就是我在Page_Load上做的事情。

  if (Page.Request.Params.Get("__EVENTTARGET") == "btnHidden") //Workaround hack for AsyncPostBackTrigger fail 
       this.btnHidden_Click(null, null); 

当发生异步回发时,我只是明确地触发事件。有点hacky,但不值得花更多的时间:)

1

首先,确保您的程序集设置为以.NET 4.0 Framework为目标,然后查看您的web.config文件。您可能需要执行ASP所需的大量设置引用。 。ASP.NET 2.0下NET AJAX操作,你可以删除

具体来说,检查<compilation>标签和标签<httpHandlers><system.web>system.webServer

例如,您可能会看到类似下编译如下>组件:

<compilation> 
    <assemblies> 
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    </assemblies> 
</compilation> 

这些引用最有可能被删除。此外,<pages><httpHandlers><httpModules>下的一组设置也可能会被删除。

<pages> 
    <controls> 
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </controls> 
</pages> 
<httpHandlers> 
    <remove verb="*" path="*.asmx"/> 
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
</httpHandlers> 
<httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</httpModules> 
+0

嘿rsbarro,谢谢你的回复。我在升级时删除了这些部分。 javascript调用也是如此。不知道有什么突破。 – Praveen 2011-03-08 19:41:02

+0

@Praveen因此,UpdatePanel会触发一个回传,但正确的事件不会被解雇?它是否会触发完整的回发或异步回传? – rsbarro 2011-03-08 21:15:06

相关问题