2012-05-23 48 views
0

我有一個ASP.NET MVC應用程序,我爲我的數據聲明瞭幾個C#模型。然而,我也在客戶端處理數據,如果我能以某種方式獲得C#類的JavaScript表示,所以我不必在JavaScript中重新聲明相同的數據結構。理想情況下,在我的客戶端代碼中,我會引用帶有類名稱的腳本作爲查詢字符串參數,它將返回定義所需C#類的構造函數的JS代碼。例如。有沒有方法可以輕鬆獲取C#模型的JavaScript表示?

<script src="/model/get?type=Myapp.User"></script> 

當然,這一切都會在運行時發生反射的幫助。

有沒有現成的解決方案可以做到這一點?謝謝。

+0

基本上,這是不可能的。有很多服務,語言結構,以及應用程序和JS和瀏覽器可以爲您提供的不兼容性。 – cheeken

回答

0

您可以使用內置的JsonResult類返回對象的實例作爲JSON,但對於需要自己構建某些內容的類型信息(可能會返回爲JSON)。

0
Json.Encode(MyObject) 

或者得到newtonsofts json庫(更好),它有很多選項,包括類型信息,這對繼承很有用。

但是....任何循環引用都是問題。通常最好使用視圖需要的最小對象結構創建匿名對象,然後對其進行編碼。

+0

謝謝你的迴應。這種方法會爲我創建一個JavaScript對象構造函數嗎?我將自己在JavaScript中創建對象,我不需要在Json中編碼的現有對象。 –

+0

它只是給你json,但是,這是非常有用的....你可以用它來初始化你自己的對象,或做任何事情。作爲一個例子,在knockout js中,你只需調用一個方法將json映射到一個對象上,並將所有的json轉換爲可觀察對象。 –

相關問題