如何返回包含视图的 html 文本的 JSON

本文关键字:视图 html 文本 JSON 包含 何返回 返回 | 更新日期: 2023-09-27 18:33:46

我想返回带有"IsError"标志的错误html文本。
我该如何实现它?
这是我的审判。
假设我提交了 Ajax.BeginForm 并且服务器端发生了错误。

全球

void Application_Error(Object sender, EventArgs e)
{
    var exception = Server.GetLastError();
    var number = GetErrorNumber();
    Server.ClearError();
    Response.Redirect("/Error?number=" + number, false);
}

查看错误/索引

<div>
An error occurred<br>
Error number : @ViewBag.ErrorNumber
</div>

错误控制器我想返回 JSON,包括视图 html 和"IsError = true"!!

ViewBag.ErrorNumber = number;
return View();

客户端 JavaScript 捕获返回的值。
如果"IsError"为真,则返回的html文本将呈现。(我希望)

如何返回包含视图的 html 文本的 JSON

我认为你应该返回json并使用javascript在客户端创建HTML DIV。我认为你不能在json中返回HTML。

您的需求似乎不实用,这通常表明其他地方存在问题。

我建议采用以下方法:

  1. 使用标准 try-catch 捕获操作中的错误。
  2. 检查它是否是带有IsAjaxRequest的ajax请求,如果为true,则返回json,否则返回标准html视图

下面是有关您的操作的示例:

    public ActionResult FormPostHandler()
    {
        try
        {
            // Process request
        }
        catch (Exception ex)
        {
            if (Request.IsAjaxRequest())
            {
                return Json(new
                {
                    Success = false,
                    ErrorNo = 1
                });
            }
            else
            {
                return View("ErrorView"); // add model for error
            }
        }

    }

更新:

再次阅读您的问题后,我可能已经弄清楚您要实现的目标。

  1. 使用上面的代码输出 json 结果。
  2. 在客户端,创建显示错误所需的 html Success如果错误为 false,并将其添加到 HTML DOM 中。

我会说用JSON返回html是一种不好的做法,最好让JSON只携带信息,让你的表示层(html和javascript)处理外观。

如果你使用的是jQuery,原型等,这应该非常简单。