Частичное перенаправление рендеринга MVC Ajax - PullRequest
1 голос
/ 30 марта 2012

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

$(document).ready(function () {
   $.ajax({
      url: '<%=Url.Content("~/Area/Controller/Action")%>';
      success: function (data) {
        $("#div1").html(data);
      },
      error: function (data) {
        $("#div1").html(data.responseText);
      }
   });
});

Проблема, которую я получаю, заключается в том, когда я пытаюсь перенаправить с контроллера, страницу, на которуюЯ перенаправлен на визуализацию внутри div вместо простого перенаправления.

Контроллер:

public ActionResult Index()
{
   if (condition...) 
      return RedirectToAction("Index", "Controller", new { Area = "Area" });

   return PartialView("view", model);
}

Мне нужно иметь возможность полностью перенаправить на другую страницу.

Ответы [ 2 ]

1 голос
/ 30 марта 2012

В настоящее время вы просите jQuery заполнить $('#div1') ответом HTML от контроллера.Это не то, что вы хотите.Почему ваш контроллер не отправляет обратно URL вместо HTML страницы?

$.ajax({
   url: '<%=Url.Content("~/Area/Controller/Action")%>';
   success: function (data) {
      window.location.href = data.url;
   },
   error: function (data) {
      $("#div1").html(data.responseText);
   }
});

Вы также добавили дополнительную закрывающую скобку, которую я удалил.

0 голосов
/ 02 апреля 2012

Просто пытаюсь взломать вашу логику, чтобы она заработала.

public ActionResult Index()
{
   if (condition...) 
      return new {Status = 1, Content = <your URL to Redirect to>};

   return new {Status = 2, Content = PartialView("view", model)};
}



$(document).ready(function () {
   $.ajax({
      url: '<%=Url.Content("~/Area/Controller/Action")%>';
      success: function (data) {
        if(data.d.Status = 1)
          {
            window.location.href = data.d.Content;  
          }
        else
          {
            $("#div1").html(data.d.Content);
          }            
      },
      error: function (data) {
        $("#div1").html(data.responseText);
      }
   });
});

Примечание: я не проверял это.Возможно, вам придется поиграть с ним, чтобы он заработал.Также вам может потребоваться изменить тип возвращаемого значения Index на «object».

Пожалуйста, дайте мне знать результат.

...