2016-08-24 14 views
0

現在、私はWebアプリケーションの.Net 3.5から.Net 4.6.1への移行に取り組んでいます。この移行では、コントロールがUpdatePanelにある場合にResponse.Redirectが機能しないという問題に直面していました。しかし、コマンドを使用してポストバックを登録するソリューションが見つかりました。部分ポストバック後のUpdatePanelのRegisterPostBackControls

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

このステートメントはページをリダイレクトできますが、別の問題が発生します。

2つのボタンでUpdatePanelでリピーターコントロールをサポートしています。1. Edit、2. ShowMessage。 ユーザーがページに来て「編集」ボタンをクリックすると、ユーザーは編集ページにリダイレクトされます。今はうまく動作します。しかし、ユーザーが "ShowMessage"ボタンをクリックすると、jQueryが何らかのメッセージを表示し、同じページにとどまります。ポップアップを閉じると、編集ボタンは機能しなくなり、クリックするとリダイレクトは発生しません。 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以上のページがあるので、私にとっては非常に退屈な仕事になると思います。他の解決策はありますか?またはあなたはなぜそれが最新のフレームワークではなく、ネット3.5で動作しないのか知っていますか? –

関連する問題