Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > ASP.NET
Регистрация

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 21:42


11:47.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.