2012-09-16 16 views
0

我有以下代碼:我可以使用類從我的MVC程序返回json數據到我的視圖嗎?

return Json(new { 
    entity = vm.Entity, 
    errors = e.Message, 
    field = vm.Field 
}); 

如果我輸入下面的它仍然會編譯好的,但後來卻沒當視圖試圖讀取數據。

return Json(new { 
    wrongspellingofentity = vm.Entity, 
    errors = e.Message, 
    field = vm.Field 
}); 

有什麼辦法,我可以使用某種類的返回我的數據,然後如果是的話我將如何處理客戶端的閱讀方法。有沒有可以用來接受數據的JavaScript類的東西?

+0

發佈您在客戶端收到的JSON – Shyju

回答

0

使用Anonymouse類型與使用類相同,因爲編譯器會將匿名類型創建爲類。

只需指定要轉換爲JSON的類,就可以像現在這樣操作,結果就像原樣一樣。

考慮:

return Json(new MyType{ 
    entity = vm.Entity, 
    errors = e.Message 
}); 
0

如果您關注的是,改變在服務器端的一個屬性不被客戶端撈起,用C#類將沒有真正的幫助。 JavaScript本身不支持類,只要您傳遞有效的JSON就沒有理由抱怨。

您可以生成關閉C#程序集的JavaScript僞類,並且在加載JSON數據時,將生成的JavaScript對象轉換爲具有用於使缺失或不正確的屬性失效的機制的那些類之一。這在技術上是可行的,但是,不知道你的意圖,我不知道我是否會建議在生成和解釋JSON數據時受到紀律處分。

0

您可以向客戶端發送自定義視圖模型(它只是一個POCO類)。

假設你有一個像這樣

public class CustomerInfo 
{ 
    public string Name { set;get;} 
    public int Age { set;get;} 
} 

你可以從你的行動方法返回它像一類這個

public Actionresult GetCustomerInf() 
{ 
var cm=new CustomerInfo(); 
cm.Name="Some Name"; 
cm.Age=23; 
return Json(cm,JsonRequestBehaviour.AllowGet); 
} 

這將返回一個JSON這樣

{ "Name":"Some Name", "Age":"23" } 

要從客戶端JavaScript訪問此,您可以使用getJSON方法。

$.getJSON("@Url.Action("GetCustomerInfo","YourController")",function(data){ 
    //now you can parse through the JSON result we received back 
    alert(data.Name); 
    alert(data.Age); 
}); 

如果您從操作方法返回複雜類型,則可以獲取JSON結構並更改解析結果的代碼。

jsonlint.com是一個有用的網站,它可以幫助您驗證結構,同時使用JSON

相關問題