我正在尝试清理我的代码。我有一个网格屏幕,它会刷新以下内容:
public ActionResult Details(string pk)
{
IEnumerable<ContentDetail> model = null;
try
{
model = _content.Details(pk);
if (model.Count() > 0)
{
return PartialView(getView(pk) + "Details", model);
}
}
catch (Exception e)
{
log(e);
}
return Content("No records found");
}
我的所有其余代码都使用 json,我想返回如下内容:
public JsonResult JsonDetails(string pk)
但是我应该如何处理 PartialView?我找不到任何有关如何执行此操作的信息。这样做还有什么好处/坏处吗?我在想,如果代码失败,那么我会返回新的 ASP MVC4 代码使用的类似以下内容:
return Json(new { errors = GetErrorsFromModelState() });
有人可以帮我解决这个问题吗?我正在寻找特别针对 MVC4 的任何建议。
请您参考如下方法:
我以前使用过此 answer 中概述的方法,这对我来说是成功的。
我想不出在 JSON 中返回 HTML 有什么缺点,尽管负载可能比单独返回数据大得多。
另一种方法是将模型作为 JSON 返回,并使用模板库,例如Handlebars.js , 在客户端生成标记。这是单页应用程序中的常见方法。
关于返回错误的想法很好。 GetErrorsFromModelState
仅在模型状态中存在验证错误时使用 - 在上面的示例中,您没有执行任何需要使用此方法的验证。所以你可能想在你的 catch block 中输出一些友好的消息,例如
try
{
...
}
catch (Exception e)
{
log(e);
return Json(new { errors = "An error occurred, please try again later" });
}