Je suis en train d'écrire une page unique application ajax avec ASP.NET MVC - faire de grosses utilisation de jQuery. Je fais quelque chose de semblable à la suivante tout au long de l'app:
JS:
$.ajax({
type: "GET",
url: "/Home/GetSomePartialView/",
data: someArguments,
success: function (viewHTML) {
$("#someDiv").html(viewHTML);
},
error: function (errorData) { onError(errorData); }
});
Contrôleur De C#:
public ActionResult GetSomePartialView(SomeArgumentModel someArguments)
{
return PartialView("_CaseManager");
}
Cela fonctionne très bien. L' viewHTML
(en ajax success
de la fonction) est retourné comme une chaîne et je peux pousser sur la page, pas de problème.
Maintenant ce que je voudrais faire est de retour, non seulement la PartialView HTML de la chaîne, mais aussi une sorte d'indicateur de l'état. C'est une des autorisations chose - par exemple, si quelqu'un essaie d'obtenir une part de leur application, ils n'ont pas l'autorisation, je veux revenir un autre PartialView qu'ils ont demandé et également d'afficher un message dans une fenêtre pop-up de leur dire pourquoi ils ont obtenu une Vue différente de ce qu'ils avaient demandé.
Donc - pour ce faire, je voudrais faire la chose suivante:
Contrôleur De 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); }
});
Cette SORTA fonctionne à l'heure actuelle. Je reçois un bon objet en JavaScript (ce que je m'attends à voir), mais je ne vois pas comment arriver à la pleine HTML chaîne de l' jsReturnArgs.View
de la propriété.
Je suis vraiment à la recherche pour la même chaîne, qui serait retourné si je viens de revenir de l' PartialView
par lui-même.
(Comme je l'ai mentionné au début, c'est une simple page app - donc je ne peux pas juste de les rediriger vers un autre point de Vue).
Merci d'avance pour toute aide!