【问题标题】:ASP.NET MVC & JsonResult & jQuery returns encoded results... why?ASP.NET MVC & JsonResult & jQuery 返回编码结果......为什么?
【发布时间】:2011-10-31 23:54:01
【问题描述】:

我有一个使用 jQuery 的 ASP.NET MVC 3 项目。在某些时候,一个 jQuery $get() 调用是对一个返回类型为 JsonResult 的控制器方法进行的。其中一个字段是 HTML 字段。

由于某种原因,它不会返回 HTML,而是对其进行编码。

我已经尝试过 HtmlEncode、HtmlDecode、HtmlString 等... - 没有任何效果。

总是这样

"\u003cp\u003e" or "&<"

并且永远不会给出真正的HTML,例如

<p>some paragraph</p>

所以 jQuery 总是会记下所有的标签而不解析它们(例如段落不会显示为段落,但会像 HTML 标签一样写入)。不用说,在 DB 中我有没有编码的 HTML 本身。

非常感谢您的帮助:)

谢谢

【问题讨论】:

    标签: c# jquery asp.net-mvc json


    【解决方案1】:

    不知道你做错了什么,因为你显示的代码正好是 0。

    但以下内容对我来说非常好,并且不会发生任何编码:

    控制器:

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    
        public ActionResult AjaxTest()
        {
            return Json(new { HtmlField = "<p>some paragraph</p>" }, JsonRequestBehavior.AllowGet);
        }
    }
    

    查看:

    <script type="text/javascript">
        $.getJSON('/home/ajaxtest', function (result) {
            $('body').append(result.HtmlField);
        });
    </script>
    

    【讨论】:

    • 这正是我正在做的 - 并且遇到了这个问题。不知道为什么。但 jQuery 解码完成了这项工作。
    • @roman,很明显,你没有完全按照我在这里展示的那样做,因为它不需要任何编码技巧就可以工作。
    【解决方案2】:

    伟大的样本达林迪米特洛夫。将 AjaxTest() 添加到主控制器并删除

    <script type="text/javascript">
    $.getJSON('/home/ajaxtest', function (result) {
        $('body').append(result.HtmlField);
    });
    

    在 about.cshtml 视图中,运行应用并选择 about 链接。

    【讨论】:

      【解决方案3】:

      我不熟悉 ASP.NET,但是“&<”看起来您可能距离正确解码仅一步之遥。请参阅How to decode HTML entities using jQuery? 了解如何完成剩下的工作。

      【讨论】:

        猜你喜欢
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 2011-12-11
        相关资源
        最近更新 更多