我写一个单页的AJAX应用程序与ASP.NET MVC - 大量使用的jQuery。 我做类似的整个应用程序下面的内容:
JS:
$.ajax({
type: "GET",
url: "/Home/GetSomePartialView/",
data: someArguments,
success: function (viewHTML) {
$("#someDiv").html(viewHTML);
},
error: function (errorData) { onError(errorData); }
});
控制器C#:
public ActionResult GetSomePartialView(SomeArgumentModel someArguments)
{
return PartialView("_CaseManager");
}
这个伟大的工程。 该viewHTML
(在阿贾克斯success
函数)返回一个字符串,我可以推它在页面上没有问题。
现在我想做的是回到不仅PartialView HTML字符串,但也有一些种类的状态指示灯。 这是一个权限的事情 - 例如,如果有人试图获得一个部分,他们应用软件,他们没有权限,我想返回不同的PartialView比他们要求,并在弹出窗口中显示一条消息,告诉他们为什么他们得到了他们要求什么不同的视图。
所以 - 要做到这一点,我想做到以下几点:
控制器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); }
});
这SORTA工作现在。 我得到在JavaScript(什么,我期待看到)一个很好的对象,但我看不出如何在充分的HTML字符串得到jsReturnArgs.View
财产。
我真的只是寻找能,如果我只是返回返回相同的字符串PartialView
本身。
(正如我在开始提到的,这是一个单页的应用程序 - 这样我就可以不只是他们重定向到另一个视图)。
在此先感谢您的帮助!