1

Ich versuche, auf eine andere Seite von meinem Controller umzuleiten. Allerdings habe ich ein dynamisches partielles Render-Setup auf meiner Seite, das einen Teil der Seite in ein bestimmtes div umwandelt.MVC Ajax Teilweiser Redirecting

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

Das Problem Ich erhalte, wenn ich versuche, vom Controller zum Umleiten der Seite, auf welche umgeleitet ich innerhalb der div gerendert wird, anstatt nur vollständig umgeleitet wird.

Controller:

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

    return PartialView("view", model); 
} 

Ich muss vollständig auf eine andere Seite können umleiten.

Antwort

1

Sie bitten jQuery derzeit, $('#div1') mit der HTML-Antwort vom Controller zu füllen. Das ist nicht was du willst. Warum sendet Ihr Controller nicht einfach die URL anstelle der Seite HTML zurück?

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

Sie haben auch eine zusätzliche schließende Klammer, die ich entfernt habe.

+0

Dies löst nicht mein Problem ... Ich brauche jquery, um mein div zu füllen, aber nach einer Bedingung in der Steuerung möchte ich es statt zu einem anderen Controller/Aktion umleiten ... Ich habe die Frage aktualisiert, um mehr Informationen zu geben Der Controller. – Aaron

0

Nur versuchen, Ihre Logik zu hacken, damit es funktioniert.

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); 
     } 
    }); 
}); 

Hinweis: Ich habe dies nicht getestet. Möglicherweise müssen Sie damit spielen, damit es funktioniert. Möglicherweise müssen Sie auch den Rückgabetyp von Index in "Objekt" ändern.

Bitte lassen Sie mich das Ergebnis wissen.