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

时间:2012-05-11 06:43:42

标签: c# asp.net-mvc-3

我想返回带有“IsError”标志的错误html文本 我怎么能实现呢? 这是我的审判 假设我提交了Ajax.BeginForm并在服务器端发生错误。

Global.asax中

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>

ErrorController 我想返回JSON,包括查看html和“IsError = true”!!

ViewBag.ErrorNumber = number;
return View();

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你的需求似乎很不寻常,这通常表明其他地方存在问题。

我建议采用以下方法:

  1. 使用标准try-catch捕获操作中的错误。
  2. 检查它是否为IsAjaxRequest的ajax请求,如果为true则返回json,否则返回标准html视图
  3. 以下是您的行动示例:

        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. 在客户端,如果Success为false,则创建显示错误所需的html,并将其添加到HTML DOM中。
    3. 我想说使用JSON返回html是不好的做法,最好让JSON只携带信息并让你的表示层(html和javascript)处理外观。

      如果您正在使用jQuery,原型等,这应该非常简单。