2011-03-08 126 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

相關問題