2016-06-08 37 views
0

我想知道如何省略序列化的特定屬性。 問題是我不能使用[JsonIgnore][IgnoreDataMember]屬性,因爲我需要此屬性顯示在其他地方。如何在沒有[JsonIgnore]或[IgnoreDataMember]屬性的情況下省略Web-Api導航屬性中的數據

這裏是我的服務模式

public class Event 
{ 
    public long EventId { get; set; } 
    public string EventName { get; set; } 
    public DateTime? EventDate { get; set; } 
    public string EventLocalization { get; set; }   
    public string EventImage { get; set; } 
    public string EventUrl { get; set; } 
    public string EventDescription { get; set; } 
    public City City { get; set; } 
} 

public class City 
{ 
    public int CityId { get; set; } 
    public string CityName { get; set; } 
    public State State { get; set; } 
    public IEnumerable<Event> Events { get; set; } 
} 

當我問JSON從事件我回來是這樣的:

[ 
    { 
    "EventId": 1, 
    "EventName": "Alalala", 
    "EventDate": "2016-01-01T00:00:00", 
    "EventLocalization": "Musialka", 
    "EventImage": null, 
    "EventUrl": null, 
    "EventDescription": null, 
    "City": { 
     "CityId": 164, 
     "CityName": "Opole", 
     "State": { 
     "StateId": 8, 
     "StateName": "opolskie", 
     "Cities": null 
     }, 
     "Events": null 
    }, 
    "Category": { 
     "CategoryId": 1, 
     "CategoryName": "Teatr i Opera" 
    } 
    } 
] 

這裏是循環。城市模型由事件導航屬性組成,但我不想再次顯示事件,當我詢問事件的JSON時。我只想顯示CityId,CityNameState屬性。我無法在城市模型中裝飾IEnumerable<Event>屬性,因爲我需要此屬性以在請求城市JSON時返回事件列表。

我想通了,我可以創造另一種模式只需用3個屬性:CityIdCityNameState,並將其包含在事件模型,而不是城酒店物業,但與50款這是一個相當龐大的工作。

我可以用其他方式解決這個問題嗎?

+0

你看過http://www.newtonsoft.com/json/help/html/ContractResolver.htm – Louis

回答

0

我建議創建一個類城市

public class City 
    { 
     public int CityId { get; set; } 

     public string CityName { get; set; } 

     public State State { get; set; } 
    } 

和一類CityWithEvents

public class CityWithEvents : City 
    { 
     public IEnumerable<Event> Events { get; set; } 
    } 

在你需要存儲參考級市類的事件,並且如果您的任何時間需要顯示城市事件初始化類CityWithEvents

相關問題