2011-06-29 2 views
0

私はMVC 3アプリケーションで作業します。私のcshtmlページは次のようになります:Ajaxポストバックからログインページにリダイレクトする方法は?

@Ajax.BeginForm("Filter", new AjaxOptions() { UpdateTargetId = "div_GridPlaceholder") 
{ 
...some HTML 
<input id="btn_Filter" type='submit' ... /> 
} 

<div id="div_GridPlaceholder">...</div> 

Authorize属性でマークされたアクションメソッドは、現時点では文字列を返します。すべて正常に動作しますが、フォーム認証チケットの有効期限が切れ、btn_Filterボタンを押すと、ログインページがかなり奇妙なdiv_GridPlaceholderにレンダリングされます。私はログインページがそのdivの内部ではなくページ全体にレンダリングされているのを見たいと思っています。 何か助けていただければ幸いです。その後、

public ActionResult LogOn() 
{ 
    Response.AppendHeader("X-LOGON", "true"); 
    return View(); 
} 

と、このヘッダの存在のために完全なイベントとテストのためにサブスクライブし、それに応じて行動する:カスタム応答のHTTPヘッダーを追加することができ、あなたのLogonアクションで

+0

でしたユーザーのチケットが期限切れになったかどうかを知らせる特別な文字列を返し、その値を取得した場合はこのページからリダイレクトしますか? – redbmk

答えて

0

$(function() { 
    $('#div_GridPlaceholder').ajaxComplete(function (event, XMLHttpRequest, ajaxOptions) { 
     if (XMLHttpRequest.getResponseHeader('X-LOGON') == 'true') { 
      window.location.href = '@Url.Action("LogOn", "Account")'; 
     } 
    }); 
}); 
+0

私はあなたのアプローチを試みましたが、XMLHttpRequest.getResponseHeader( 'X-LOGON')は毎回nullを返します。 – Zoliqa

関連する問題