[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でのセッションエラーでページ転送を行う方法 | 蒼いねずみのお仕事
Comments