Я использую 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]
}
Все прекрасно работает, кроме случаев, когда время сеанса пользователей истекло, а затем они перенаправляются обратно на страницу входа. Затем страница входа возвращается из вызова Ajax из-за атрибута Authorize, а HTML-файл загружается в UpdateTargetId, и поэтому я получаю HTML-страницу входа в систему на странице профиля пользователя (с идентификатором цели). Мое действие контроллера выглядит так:
[Authorize]
public ActionResult Save(Int32 UserId)
{
//code to save user
return View("UserInfoControl", m);
}
Как мне решить эту проблему?
ОБНОВЛЕНИЕ (2011-10-20):
Нашел этот пост от Фила Хаака об этой конкретной проблеме - http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx. У меня еще не было возможности переварить или реализовать его решение.