2011-11-27 73 views
1

我希望我的控制器返回一个JsonResult如:从MVC3控制器返回未编码的JsonResult

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

但上面被发送到浏览器为:

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

我怎样才能返回响应未编码?

回答

1

你试图使用它的目的是返回JSON的方法来返回HTML。

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

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

我想返回一个JSON数组。该数组中的一个元素将是一个HTML字符串。为了清楚起见,上面的例子排除了数组的其余部分。 – Mark

+0

对不起,误解了你的问题。无论如何,从控制器返回HTML是错误的,从控制器返回JSON内的JSON是双重错误。 HTML属于视图,无论你想要实现什么。 – Joao

+0

检查[this](http://stackoverflow.com/questions/1106676/how-to-get-html-returned-from-actionresult-in-controller)回答。再一次,我想强化这样一个想法,即您必须做出错误的想要从控制器返回HTML – Joao

1

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

像你需要这会工作。你需要花费一些技巧才能在你的控制器中获得它的一个实例。

编辑:你只需要用正确的数据填充一个实例。

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

给一个尝试...

+0

感谢。我知道HTML.Raw,但我从未在控制器中使用它。一个例子会很棒。 – Mark

+0

@Mark S.我会尽力找到我写的一些代码。已经有一段时间了 –

+0

@Mark S看看是否给你一个有效的HTML帮助对象来处理调用Raw()。您需要传入Controller中的orig context。 –