【问题标题】:Return an unencoded JsonResult from MVC3 controller从 MVC3 控制器返回一个未编码的 JsonResult
【发布时间】:2011-11-27 02:34:37
【问题描述】:

我希望我的控制器返回一个 JsonResult,例如:

return Json(new { test = "<div>Hello World!</div>" });

但是上面发送到浏览器的是:

"\u003cdiv\u003eHello World!\u003c/div\u003e"

如何返回未编码的响应?

【问题讨论】:

    标签: json asp.net-mvc-3


    【解决方案1】:

    您正在尝试使用旨在返回 Json 的方法返回 HTML。

    您可能想看看Content() 方法及其重载。

    return Content("<div>Hello World!</div>");
    

    【讨论】:

    • 我正在尝试返回一个 JSON 数组。该数组中的一个元素将是一个 HTML 字符串。为清楚起见,上面的示例排除了数组的其余部分。
    • 抱歉,误解了您的问题。无论如何,从控制器返回 HTML 是错误的,从控制器返回 JSON 内的 HTML 是双重错误的。 HTML 属于视图,无论您要实现什么目标。
    • 检查this 答案。再一次,我想强调你必须做错事才能从控制器返回 HTML
    • 控制器没有生成 HTML。我只是将部分视图传递给 jQuery 以进行部分页面更新。这实际上是我要返回的视图。我只想将它传递给 jquery 以执行部分​​页面更新。这是一种比较常见的模式。
    【解决方案2】:

    有一个 HTML 助手 @HTML.Raw()

    这会像你需要的那样工作。不过,您需要使用一些技巧才能在控制器中获取它的实例。

    编辑:您只需要使用正确的数据填充实例。

     var html = new HtmlHelper(new ViewContext(ControllerContext, null, new ViewDataDictionary(), new TempDataDictionary()), new ViewPage());
    

    试试看……

    【讨论】:

    • 谢谢。我知道 HTML.Raw,但我从未在控制器中使用过它。举个例子就好了。
    • @Mark S。我会试着找到我写的一些代码。好久不见了
    • @Mark S 看看这是否为您提供了一个有效的 HTML 助手对象来调用 Raw() 。您需要传入控制器本身中的 orig 上下文。
    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 2012-05-23
    • 2015-07-19
    • 2016-07-28
    • 2014-10-13
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多