Piszę pojedynczą stronę ajax app z ASP.NET MVC - podejmowania intensywnego korzystania z jQuery. I zrobić coś podobnego do poniższego całej aplikacji:ASP.NET MVC - Przywracanie PartialView do Ajax wraz z innym obiektem
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");
}
to działa świetnie. viewHTML
(w funkcji ajax success
) jest zwracany jako ciąg znaków i mogę go umieścić na stronie bez problemu.
Teraz chciałbym zwrócić nie tylko ciąg HTML PartialView, ale także jakiś wskaźnik statusu. To jest kwestia uprawnień - na przykład, jeśli ktoś próbuje dostać się do części aplikacji, do której nie ma uprawnień, chcę zwrócić inną PartialView niż poprosił, a także wyświetlić komunikat w wyskakującym okienku, informując o tym dlaczego dostali Widok inny od tego, o co prosili.
Tak - aby to zrobić, chciałbym wykonać następujące czynności:
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); }
});
Ten Sorta działa teraz. Dostaję dobry obiekt w JavaScript (czego się spodziewam), jednak nie widzę, jak uzyskać pełny ciąg HTML właściwości jsReturnArgs.View
.
Naprawdę po prostu szukam tego samego ciągu znaków, który zostałby zwrócony, gdybym tylko sam zwrócił PartialView
.
(Jak wspomniałem na początku, jest to aplikacja z jedną stroną - nie mogę po prostu przekierować ich do innego widoku).
Z góry dziękuję za pomoc!
Doceniam dane wejściowe! Próbowałem uniknąć czegoś takiego, gdybym mógł. – MattW