我正在尝试清理我的代码。我有一个网格屏幕,它会刷新以下内容:

    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" }); 
} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!