我正在尝试清理我的代码.我有一个网格屏幕,使用以下内容刷新:
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");
}
Run Code Online (Sandbox Code Playgroud)
我的所有其余代码都使用json,我想返回这样的内容:
public JsonResult JsonDetails(string pk)
Run Code Online (Sandbox Code Playgroud)
但是我应该怎么做PartialView?我找不到任何关于如何做到这一点.这样做有什么优点/缺点吗?我在想如果代码失败然后我将返回类似于以下新的ASP MVC4代码使用的内容:
return Json(new { errors = GetErrorsFromModelState() });
Run Code Online (Sandbox Code Playgroud)
有人可以帮我弄这个吗?我希望找到针对MVC4的任何建议.
小智 6
我以前使用过这个答案中概述的方法,这对我来说很成功.
我想不出在JSON中返回HTML的任何缺点,尽管有效负载可能比单独返回数据时要大得多.
另一种方法是将模型作为JSON返回,并使用模板库(例如Handlebars.js)在客户端上生成标记.这是单页面应用程序中的常用方法.
关于返回错误的想法很好.GetErrorsFromModelState仅在模型状态中存在验证错误的情况下使用 - 在上面的示例中,您没有执行任何需要您使用此方法的验证.所以你可能想在catch块中输出一些友好的消息,例如
try
{
...
}
catch (Exception e)
{
log(e);
return Json(new { errors = "An error occurred, please try again later" });
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4817 次 |
| 最近记录: |