Ich schreibe eine einzelne Seite Ajax-App mit ASP.NET MVC - Verwendung von jQuery. Ich tue etwas ähnlich der folgenden in der gesamten App:ASP.NET MVC - Zurückgeben einer PartialView zu Ajax zusammen mit einem anderen Objekt
JS:
$.ajax({
type: "GET",
url: "/Home/GetSomePartialView/",
data: someArguments,
success: function (viewHTML) {
$("#someDiv").html(viewHTML);
},
error: function (errorData) { onError(errorData); }
});
-Controller C#:
public ActionResult GetSomePartialView(SomeArgumentModel someArguments)
{
return PartialView("_CaseManager");
}
Dies funktioniert gut. Die viewHTML
(in der Ajax success
Funktion) wird als String zurückgegeben und ich kann es auf der Seite schieben kein Problem.
Jetzt möchte ich nicht nur die PartialView HTML-Zeichenfolge, sondern auch eine Art Statusanzeige zurückgeben. Dies ist eine Erlaubnis Sache - zum Beispiel, wenn jemand versucht, zu einem Teil der sie App, die sie nicht haben, zu bekommen, möchte ich eine andere PartialView zurückgeben, als sie gefragt und auch eine Nachricht in einem Popup-Fenster zeigen ihnen angezeigt Warum haben sie eine andere Aussicht bekommen als sie gefragt haben?
Also -, dies zu tun, würde Ich mag folgendes tun:
-Controller C#:
public ActionResult GetSomePartialView(SomeArgumentModel someArguments)
{
ReturnArgs r = new ReturnArgs();
bool isAllowed = CheckPermissions();
if (isAllowed)
{
r.Status = 400; //good status ... proceed normally
r.View = PartialView("_CaseManager");
}
else
{
r.Status = 300; //not good ... display permissions pop up
r.View = PartialView("_DefaultView");
}
return Json(r);
}
public class ReturnArgs
{
public ReturnArgs()
{
}
public int Status { get; set; }
public PartialViewResult View { get; set; }
}
JS:
$.ajax({
type: "GET",
url: "/Home/GetSomePartialView/",
data: someArguments,
success: function (jsReturnArgs) {
if (jsReturnArgs.Status === 300) { //300 is an arbitrary value I just made up right now
showPopup("You do not have access to that.");
}
$("#someDiv").html(jsReturnArgs.View); //the HTML I returned from the controller
},
error: function (errorData) { onError(errorData); }
});
Diese SORTA funktioniert jetzt. Ich bekomme ein gutes Objekt in JavaScript (was ich zu sehen erwarte), aber ich kann nicht sehen, wie man die vollständige HTML-Zeichenfolge der jsReturnArgs.View
-Eigenschaft erhält.
Ich bin wirklich nur auf der Suche nach der gleichen Zeichenfolge, die zurückgegeben würde, wenn ich nur die PartialView
von selbst zurückgeben würde.
(Wie ich am Anfang erwähnt habe, ist dies eine einzelne Seite App - so kann ich nicht einfach zu einer anderen Ansicht umleiten).
Vielen Dank im Voraus für jede Hilfe!
Ich schätze den Eingang! Ich habe versucht, so etwas zu vermeiden, wenn ich könnte. – MattW