2013-11-02 6 views
3

У меня есть метод контроллера со следующим кодом:RedirectToAction показывает на странице 404, но до сих пор перенаправляет

ClearAuthenticationCookies(); 
FormsAuthentication.SetAuthCookie(EmailAddress, false); 

RedirectToAction("Index", "Home"); 

var responseObject = new responseObject 
{ 
    responseCode = "2", 
    responseMessage = "No" 
}; 
return Json(new {responseObject = responseObject}); 

Это выполняется с другого сайта через AJAX, но не показывает правильный URL в браузере. Если бы я войти в систему непосредственно, она работает:

$.ajax({ 
     type: "POST", 
     url: "http://localhost:51437/UserAccount/SignOn2", 
     dataType: 'json', 
     data: jsonData, 
     crossDomain: true, 
     success: function(result) { 
     }, 
     error: function(result) { 
     } 
    }); 

Я также должен щелкнуть мою ссылку дважды, прежде чем он на самом деле входит в меня, но страница не найдена.

ответ

2

Ваш контроллер должен быть public RedirectResult SignOn(...) и return RedirectToAction("Index", "Home"); - это объект, который вы должны вернуть с вашего контроллера. Не возвращайте JsonResult после этого.

UPDATE: Вы можете вернуть один ответ по одному запросу. Чтобы достичь того, чего вы хотите, у вас есть два варианта. Во-первых: вернуть результат json, затем, когда клиент получит результат json и проверит его, вы можете отправить другой запрос на сервер и перенаправить на другую страницу. Или вы можете перенаправить с клиента, используя window.location.replace для изменения текущей страницы через js. Furthemore, вы можете подготовить ссылку на сервере, чтобы достичь всех .net маршрутов преимущества и включить его в результате JSon и чем сделать что-то вроде этого:

$.ajax { 
    .. 
    .. 
    .. 
    success: function(data) { 
    alert(data.message_for_user); 
    window.location.replace(data.url_to_redirect); 
    } 
} 
+0

Хорошо, я постараюсь это, когда я получаю шанс, но что если я хочу перенаправить пользователя, но и вернуть JsonResult. Как я могу это сделать? – xaisoft

+0

Пожалуйста, не забудьте отметить его как правильный ответ :) – AuthorProxy

+0

Спасибо, я пошел с этим, но вместо этого, когда я вернусь к успеху, я открываю окно с url вместо замены. Меня беспокоит только то, что происходит с блокировщиками всплывающих окон? – xaisoft

 Смежные вопросы

  • Нет связанных вопросов^_^