0

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

全球.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 文本将呈现。(我希望)

4

2 回答 2

1

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

于 2012-05-11T06:48:47.147 回答
0

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

我建议采用以下方法:

  1. 使用标准的 try-catch 捕获操作中的错误。
  2. 用IsAjaxRequest检查是否是 ajax 请求,如果为真则返回 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、原型等,这应该非常简单。

于 2012-05-11T06:49:40.273 回答