Ajax.BeginForm を使用して、特定のコントローラー アクションに ajax ポストバックを実行するフォームを作成し、応答ビューを UpdateTargetId に挿入しています。
using (Ajax.BeginForm("Save", null,
new { userId = Model.UserId },
new AjaxOptions { UpdateTargetId = "UserForm" },
new { name = "SaveForm", id = "SaveForm" }))
{
[HTML SAVE BUTTON]
}
ユーザーセッションがタイムアウトしてログインページにリダイレクトされる場合を除いて、すべてがうまく機能します。その後、Authorize 属性のために Ajax 呼び出しからログイン ページが返され、html が UpdateTargetId に読み込まれるため、ユーザー プロファイル ページ (Target Id) 内にログイン ページ html が作成されます。私のコントローラーアクションは次のようになります。
[Authorize]
public ActionResult Save(Int32 UserId)
{
//code to save user
return View("UserInfoControl", m);
}
どうすればこの問題を解決できますか?
更新 (2011-10-20):この正確な問題に関する Phil Haack の投稿を見つけました - http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-あなた-donrsquot-want.aspx。彼のソリューションを消化または実装する機会はまだありません。