如何返回包含视图的 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文本将呈现。(我希望)
我认为你应该返回json并使用javascript在客户端创建HTML DIV。我认为你不能在json中返回HTML。
您的需求似乎不实用,这通常表明其他地方存在问题。
我建议采用以下方法:
- 使用标准 try-catch 捕获操作中的错误。
- 检查它是否是带有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
}
}
}
更新:
再次阅读您的问题后,我可能已经弄清楚您要实现的目标。
- 使用上面的代码输出 json 结果。
- 在客户端,创建显示错误所需的 html
Success
如果错误为 false,并将其添加到 HTML DOM 中。
我会说用JSON返回html是一种不好的做法,最好让JSON只携带信息,让你的表示层(html和javascript)处理外观。
如果你使用的是jQuery,原型等,这应该非常简单。