2011-11-27 71 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。 –