ASP.NET MVCで単一ページのajaxアプリケーションを作成しています.jQueryを大量に使用しています。ASP.NET MVC - 別のオブジェクトと共にAjaxにPartialViewを返す
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を返したいのですが、ポップアップウィンドウにメッセージを表示してなぜ彼らは彼らが求めたものとは異なるビューを持っていたのですか?
ので - これを行うために、私は次の操作を実行したいと思います:
コントローラー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で良いオブジェクトを取得しますが(私が見たいと思うもの)、jsReturnArgs.View
プロパティの完全なHTML文字列を取得する方法はわかりません。
私はちょうどPartialView
を返すだけで返される同じ文字列を探しています。
(私が最初に触れたように、これは単一のページアプリなので、別のビューにリダイレクトすることはできません)。
ありがとうございました! JSONとしてエンコード複数のパラメータとあなたのhtmlでJSONを返すために持っスキップする
私は入力を感謝します!もし私ができるなら、私はそれのようなものを避けようとしていました。 – MattW