[ASP.Net] UpdatePanel のセッションタイムアウト時にポストバック処理を行う

サイトに掲載されてるポストバックのコードが不完全だったので
くっつけて動くようにした・ω・

if (kTiket.strLogin == null) { // Time out
  if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack) {
    //AsyncPostback
    string script = "window.open('Default.aspx','_self');";
    Control gcont = GetAsyncPostBackControl(Page);
    ScriptManager.RegisterStartupScript(gcont , gcont.GetType(), "redirect",script , true);
  } else {
    //Postback
    Response.Redirect("Default.aspx");
  }
}

コントローラーを取得するコードも不完全だったのでくっつけてみた・ω・

private Control GetAsyncPostBackControl(Page page)
{
  Control ctrl = null;
  //"__EVENTTARGET"からControl名を取得
  string ctrlName = Page.Request.Params.Get("__EVENTTARGET");
  if (!String.IsNullOrEmpty(ctrlName)) {
   ctrl = page.FindControl(ctrlName);
  } else
{
//Buttonの場合はこちら
    foreach (string ctl in Page.Request.Form) {
      Control c = Page.FindControl(ctl);
      if (c is System.Web.UI.WebControls.Button) {
        ctrl = c;
        break;
      }
    }
  }
  return ctrl;
}

ブランク復帰エンジニアの開発メモ POSTBACK時に、イベント発生元のコントロールIDを取得する
UpdatePanelでのセッションエラーでページ転送を行う方法 | 蒼いねずみのお仕事

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です