2016-08-24 81 views
0

目前我正在將我們的Web應用程序從.Net 3.5遷移到.Net 4.6.1。在此遷移中,我們遇到了Response.Redirect在UpdatePanel中無法工作的情況。但後來我們找到了使用命令註冊回發的解決方案。UpdatePanel中的RegisterPostBackControls部分回發後

ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnViewHistory); 

該聲明允許重定向頁面,但是會出現另一個問題。

支持我們在UpdatePanel中有2個按鈕進行中繼器控制1.編輯2. ShowMessage。 如果用戶訪問頁面並單擊「編輯」按鈕,則用戶被重定向到編輯頁面。它現在正常工作。但是,如果用戶點擊「ShowMessage」按鈕,它顯示jQuery彈出一些消息,並保持在同一頁面上。彈出關閉後,Edit按鈕停止工作,點擊時不會發生重定向。在devTool中,它顯示下面的錯誤。

ScriptResource.axd?d=JnUc-DEDOM5KzzVKtsL1tThQiyHdLKhpowp3haErZKv6k2DZphOCMxhYOmqVubfNB4ASzRZ-WmXlbG…:885 Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. 

有人能告訴我如何在部分回發後在UpdatePanel中完成RegisterPostBackControls嗎?

回答

0

我認爲你要找的是IsInAsyncPostBack

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack == true) 
     { 
      //do stuff on partial postback 
     } 

     //if you want buttons in an updatepanel Repeater to trigger a full postback you need to register them for it 
     foreach (RepeaterItem item in Repeater1.Items) 
     { 
      Button btn = item.FindControl("Button1") as Button; 
      ScriptManager.GetCurrent(this).RegisterPostBackControl(btn); 
     } 
    } 
+0

它可以控制外部中繼器,但如何做中繼器控制?我是否需要迭代中繼器和註冊中的所有控件? –

+0

如果更新面板中的按鈕需要完整回發,那麼是的。將它添加到我的示例中。 – VDWWD

+0

如果這是解決方案,那麼我認爲這將是非常繁瑣的工作,因爲我的應用程序中有300多頁。你有其他解決方案嗎?或者你知道爲什麼它不能在最新的框架中工作,但.net 3.5? –

相關問題