ASP.NET MVC を使用して単一ページの ajax アプリを作成しています - 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
ajaxsuccess
関数内の)は文字列として返され、問題なくページに押し込むことができます。
ここでやりたいことは、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は現在機能しています。jsReturnArgs.View
JavaScript で適切なオブジェクトを取得できますが (期待しているもの)、プロパティ の完全な HTML 文字列を取得する方法がわかりません。
をそのまま返すだけの場合に返されるのと同じ文字列を探しているだけですPartialView
。
(最初に述べたように、これは単一ページのアプリなので、別のビューにリダイレクトすることはできません)。
助けてくれてありがとう!