MVC возвращает неправильное мнение - PullRequest
1 голос
/ 18 января 2012

В файле FirstView.cshtml у меня есть событие - нажатие на ячейку таблицы перенаправляет вас на метод:

$.get('@Url.Action("MyMethod", "MyController")', { someParameters });

В методе MyMethod, который недействителен, я вызываю и событие DownloadStringCompleted, в котором у меня есть:

Response.Redirect(Url.Action("Second", "MyController"));

Второй - это метод действия, который возвращает SecondView. SecondView - мой желаемый вид, но он никогда не отображается в браузере. В него входит точка останова, она проходит, и я получаю FirstView в браузере.

В чем может быть причина? Может быть потому, что они находятся в одном контроллере?

Методы таковы: Второй обратный просмотр. В его теле я передаю некоторые параметры ViewData.

Событие: Я читаю некоторые данные JSON и вызываю перенаправление.

Странно то, что точка останова движется через правильное представление, но в моем браузере получается неправильное.

Ответы [ 2 ]

0 голосов
/ 18 января 2012

Попробуйте не вызывать Response.Redirect (...) в MyMethod. Вместо этого позвоните:

public ActionResult MyMethod()
{
  return Redirect(Url.Action("Second"));
}

Обратите внимание, что если имя контроллера совпадает с тем, в котором вы находитесь, вам не нужно явно включать его.

Я только что провел тест на своем устройстве dev, и это работает (при условии, что я правильно смоделировал вашу проблему).

0 голосов
/ 18 января 2012

Srcee,

Я полагаю, это связано с тем, что ваша функция ajax «выполнена», как только она выполнила действие MyMethod.Перенаправление не запускается, поскольку оно не является частью конвейера из-за вызова ajax (по крайней мере, это мое базовое понимание).В качестве альтернативы вы могли бы сделать что-то вроде следующего:

$.ajax({
  url: '@Url.Action("MyMethod", "MyController")',
  data: { id: 123 }, // i.e. someParameters 
  context: document.body,
  success: function(){
     window.location = '@Url.Action("Second", "MyController")';
  }
});

Это все главное, что может не сработать, но это альтернативный подход.

[edit] - основываясь на вашем последующем редактировании, я бы фактически предложил, чтобы вы вообще не использовали ajax, поскольку невозможно (согласно моим комментариям ниже) перенаправить на сервер с помощью вызова ajax.см .:

asp.net mvc ajax post - не работает операция перенаправления

, а также:

Как я могу перенаправить действие в $ .ajaxОбратный звонок?

для подтверждения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...