2009-06-21 44 views
4

目前我正在使用極好的Linq 2 Json.net(通過newtonsoft),這是一個非常簡單的工具,可以通過編程方式生成JSON結果。(更好的做法)你如何把JSON結果放在ASP.net MVC框架中?

但是在完成一些項目之後,我停下來重新思考,我應該在控制器中生成JSON結果嗎?我的意思是,在.net MVC框架中,它提供了一個JSONResult作爲ViewResult之一。但是,控制器應該怎麼打擾結果如何產生?還是應該只是「提供」數據來查看,並且它應該是視圖的工作來生成必要的輸出(和格式)?

最後一件事,我還聽說在控制器中使用「ViewData」可能不是一個好主意,因爲控制器涉及顯示/輸出問題太多,可以使用哪種更好的模式或方法?

回答

1

我想我會證明控制器中的JSON輸出是正確的,因爲JSON只是ViewData的一種形式,就像使用ViewData Dictionary與View頁面進行通信一樣。

實際的View頁面已經被渲染,或者被客戶端語言處理。雖然有一個缺點,但是JSON輸出控制器完全依賴於視圖,是的,您仍然可以將視圖更改爲接受JSON作爲通信通道的其他一些東西,但如果要更改客戶端則不是一個好主意例如,使用其他通道作爲通信的桌面應用程序(如直接TCP連接或SOAP應用程序等),因爲控制器是爲JSON製作的。 (確實可以讓適配器進行翻譯)。

所以要把它包起來,只要你不打算給其他平臺而控制器保持不變,JSON在控制器中的渲染就可以了。

0

我通常在控制器本身中設置JsonResults的結果。我覺得這取決於Model/DAL/BLL給我的數據/枚舉按要求過濾,但控制器/視圖返回它。在JsonResult的情況下,框架處理視圖/編碼片段。我會保留對格式化文本(主要是html)輸出的意見。使用JSON和文件/圖像響應的內置處理程序/結果。 XML輸出可以以任何方式實現。

+0

我同意意見是格式化輸出,但JSON不是一種格式輸出?在我看來,控制器的JSON輸出實際上做了兩件事,即同時處理輸入和格式輸出。 – xandy 2009-06-22 01:51:31

1

對於大多數服務器端語言來說,JSON輸出相當簡單,我從來沒有理由(或者能夠證明嘗試)使模板複雜化。

雖然可以,但發生的開銷量可能是浪費。在大多數情況下,渲染模板會觸發整個子系統,在開始業務之前必須清空。

關於JSON(和AJAX響應一般)的整個想法(對我而言)是,您可以從服務器上減少大量開銷。

+0

這是一個Rails特定的註釋... 在處理內容協商時,可以使用模板語言來創建JSON響應。 但最終,這些模板已經非常簡單。我認爲這適用於使用模板生成JSON輸出的任何其他語言。 – 2009-07-05 15:43:40