ASP.NET MVC에서 단일 페이지 아약스 응용 프로그램을 작성하고 있습니다. jQuery를 많이 사용하고 있습니다. 나는 응용 프로그램을 통해 다음과 유사한 일을 할 :ASP.NET MVC - PartialView를 다른 객체와 함께 Ajax로 반환
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
(ajax success
함수에서) 문자열로 반환되고 페이지에 아무런 문제가 없습니다.
이제 PartialView HTML 문자열뿐만 아니라 일종의 상태 표시기도 반환하고 싶습니다. 이것은 권한 항목입니다. 예를 들어, 권한이없는 앱의 일부를 얻으려고하면 누군가가 요청한 것과 다른 PartialView를 반환하고 팝업 창에 메시지를 표시하여 해당 사실을 알리고 싶습니다. 왜 그들은 View와 다른 관점을 얻었습니다.
그래서 -이 작업을 수행하기 위해, 나는 다음을 수행 싶습니다 :
컨트롤러 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); }
});
이 그렇다고
잘 작동합니다. JavaScript에서 좋은 객체를 얻었지만 (속성의 전체 HTML 문자열을 얻는 방법을 알 수는 없습니다).방금 PartialView
을 반환하는 경우 반환되는 동일한 문자열을 찾고 있습니다.
(처음 언급했듯이이 페이지는 단일 페이지 앱이므로 다른보기로 리디렉션 할 수는 없습니다.)
미리 도움을 청하십시오!
의견을 보내 주셔서 감사합니다. 할 수만 있다면 나는 그런 것을 피하려고 노력했다. – MattW