Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 12:28   #1
H'orn
Пользователь
 
Аватар для H'orn
 
Регистрация: 19.10.2009
Сообщений: 37
По умолчанию Redirect из ajax формы

Добрый день или ночь или вечер или утро.

Столкнулся с интересной проблемой, есть частичное представление с аяксовой формой для ввода логина и пароля. Аяксовая потому что некоторый контент доступен и без аутентификации, и что бы не перегружать страницу полностью было принято сделать ее аяксовой. Но всегда есть 'но', после того как логин и пароль подходят, нужно сделать редирект на дргой контроллер и экшн, а возвращается мне вся страница с и контент страницы на которую должно перейти вставлен в тот контейнер который указан в UpdateTargetId. Вопрос собственно такой как сделать редирект на другую страницу из аяксовой формы которая делает реплейс?
Код формы:
@using (Ajax.BeginForm("Login", "Main",
new AjaxOptions()
{
HttpMethod = "POST",
UpdateTargetId = "sidebar",
InsertionMode = InsertionMode.Replace
}))
{...}

Код action:
[HttpPost]
public ActionResult Login(LoginModel model)
{
if (ModelState.IsValid)
{
LoginService loginServ = new LoginService(System.Web.Configurati on.WebConfigurationManager.Connecti onStrings["AMConnectionString"].ConnectionString);
switch (loginServ.Authenticate(model))
{
// case 1: для администратора направлять на админскую часть.

case 2:{
return RedirectToAction("Test","Main");
}
default:
{
return PartialView(model);
}
}
}
else
{
return PartialView(model);
}
}
H'orn вне форума Ответить с цитированием
Старый 08.06.2012, 13:36   #2
H'orn
Пользователь
 
Аватар для H'orn
 
Регистрация: 19.10.2009
Сообщений: 37
По умолчанию

Решение оказалось очень простое.
В Action нужно изменить returnRedirectToAction("Test","Main "); на return Json(new { success = true, message = "", redirectUrl = Url.Action("Test", "Main") });

а в представлении
@using (Ajax.BeginForm("Login", "Main",
new AjaxOptions()
{
HttpMethod = "POST",
UpdateTargetId = "sidebar",
InsertionMode = InsertionMode.Replace,
OnSuccess = "loginSuccess"
}))
{...}
<script type="text/javascript">
function loginSuccess(data) {
if (data.success) {
window.location = data.redirectUrl;
}
}
</script>

Последний раз редактировалось H'orn; 08.06.2012 в 13:39.
H'orn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Google Redirect dasonets Безопасность, Шифрование 5 25.04.2012 12:35
Не работает Ajax при проверке формы! you-rick JavaScript, Ajax 1 03.07.2011 22:04
mysql error redirect Ghennadiy PHP 6 22.02.2011 20:42