如何 return 查看 JSON 结果
How to return View with JSON result
有什么方法可以 return 视图("controller",模型)和 JSON 结果?我已经这样做了(见下面的代码),但它 return 给我一个错误。
if (thereserror == true)
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = false,
description = "Error!",
JsonRequestBehavior.AllowGet
});
}
else
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = true,
description = "Hey!",
JsonRequestBehavior.AllowGet
});
}
private static string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var ViewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var ViewContext = new ViewContext(controllerContext, ViewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
ViewResult.View.Render(ViewContext, sw);
ViewResult.ViewEngine.ReleaseView(controllerContext, ViewResult.View);
return sw.GetStringBuilder().ToString();
}
}
对于我的 AJAX 我是这样做的:
$.ajax({
type: "GET",
url: "/serviceentry/getservice",
data: ({ "SONumber": soNumber }),
success: function (data) {
if (data.isValid) {
//I don't know what to put here
};
},
error: function () {
alert('error');
}
});
我看到了这样的东西,但我不知道该怎么办:MVC Return Partial View as JSON
JSON
您返回的包含 4 个属性,您访问 isValid
的方式类似,访问 View
.
$.ajax({
type: "GET",
url: "/serviceentry/getservice",
data: ({ "SONumber": soNumber }),
success: function (data) {
if (data.isValid) {
//Element- Where you want to show the partialView
$(Element).html(data.view)
};
},
error: function () {
alert('error');
}
});
PS: 也指向 JSONRequestBehavior
.
的错误位置
if (thereserror == true)
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = false,
description = "Error!"
},JsonRequestBehavior.AllowGet);
}
else
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = true,
description = "Hey!"
},JsonRequestBehavior.AllowGet);
}
private static string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var ViewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var ViewContext = new ViewContext(controllerContext, ViewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
ViewResult.View.Render(ViewContext, sw);
ViewResult.ViewEngine.ReleaseView(controllerContext, ViewResult.View);
return sw.GetStringBuilder().ToString();
}
}
有什么方法可以 return 视图("controller",模型)和 JSON 结果?我已经这样做了(见下面的代码),但它 return 给我一个错误。
if (thereserror == true)
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = false,
description = "Error!",
JsonRequestBehavior.AllowGet
});
}
else
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = true,
description = "Hey!",
JsonRequestBehavior.AllowGet
});
}
private static string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var ViewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var ViewContext = new ViewContext(controllerContext, ViewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
ViewResult.View.Render(ViewContext, sw);
ViewResult.ViewEngine.ReleaseView(controllerContext, ViewResult.View);
return sw.GetStringBuilder().ToString();
}
}
对于我的 AJAX 我是这样做的:
$.ajax({
type: "GET",
url: "/serviceentry/getservice",
data: ({ "SONumber": soNumber }),
success: function (data) {
if (data.isValid) {
//I don't know what to put here
};
},
error: function () {
alert('error');
}
});
我看到了这样的东西,但我不知道该怎么办:MVC Return Partial View as JSON
JSON
您返回的包含 4 个属性,您访问 isValid
的方式类似,访问 View
.
$.ajax({
type: "GET",
url: "/serviceentry/getservice",
data: ({ "SONumber": soNumber }),
success: function (data) {
if (data.isValid) {
//Element- Where you want to show the partialView
$(Element).html(data.view)
};
},
error: function () {
alert('error');
}
});
PS: 也指向 JSONRequestBehavior
.
if (thereserror == true)
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = false,
description = "Error!"
},JsonRequestBehavior.AllowGet);
}
else
{
return Json(new
{
view = RenderRazorViewToString(ControllerContext, "Index", model),
isValid = true,
description = "Hey!"
},JsonRequestBehavior.AllowGet);
}
private static string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var ViewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var ViewContext = new ViewContext(controllerContext, ViewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
ViewResult.View.Render(ViewContext, sw);
ViewResult.ViewEngine.ReleaseView(controllerContext, ViewResult.View);
return sw.GetStringBuilder().ToString();
}
}