为了账号安全,请及时绑定邮箱和手机立即绑定

MVC将部分视图作为JSON返回

MVC将部分视图作为JSON返回

月关宝盒 2019-09-19 16:44:43
有没有办法从MVC返回一个HTML字符串呈现部分作为JSON响应的一部分?    public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model)    {        if (ModelState.IsValid)        {            if(Request.IsAjaxRequest()                return PartialView("NotEvil", model);            return View(model)        }        if(Request.IsAjaxRequest())        {            return Json(new { error=true, message = PartialView("Evil",model)});        }        return View(model);    }
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您可以从PartialViewResult对象中提取html字符串,类似于此线程的答案:


将视图渲染为字符串


PartialViewResult和ViewResult都派生自ViewResultBase,因此同样的方法应该同时适用于两者。


使用上面的线程中的代码,您将能够使用:


public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model)

{

    if (ModelState.IsValid)

    {

        if(Request.IsAjaxRequest())

            return PartialView("NotEvil", model);

        return View(model)

    }

    if(Request.IsAjaxRequest())

    {

        return Json(new { error = true, message = RenderViewToString(PartialView("Evil", model))});

    }

    return View(model);

}


查看完整回答
反对 回复 2019-09-19
?
富国沪深

TA贡献1790条经验 获得超9个赞

而不是RenderViewToString我喜欢像这样的方法


return Json(new { Url = Url.Action("Evil", model) });

那么你可以在你的javascript中捕获结果并执行类似的操作


success: function(data) {

    $.post(data.Url, function(partial) { 

        $('#IdOfDivToUpdate').html(partial);

    });

}


查看完整回答
反对 回复 2019-09-19
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

Url.Action(“邪恶”,型号)

将生成一个获取查询字符串,但您的ajax方法是post,它将抛出错误状态500(内部服务器错误)。 - Fereydoon Barikzehy 2月14日9:51

只需在Json对象上添加“JsonRequestBehavior.AllowGet”即可。


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 519 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信