2015-06-11 18 views
7

Tôi đang cố gắng truy cập vào các trường thuộc tính (JSON) từ thực thể con được nhận từ API Web. Tuy nhiên, bằng cách nhìn vào bảng điều khiển trình duyệt, nó hiển thị một tham chiếu thay vì các trường. Làm cách nào để tôi có quyền truy cập vào các trường này?JSON API WEB Tham số tham chiếu tuần tự

góc JS XEM

<table infinite-scroll='tF.loadMore()' infinite-scroll-disabled='tF.isBusy' infinite-scroll-distance='3' class="responsive"> 
      <thead> 
       <tr> 
        <th>FIELD 1</th> 
        <th>FIELD 2</th> 
        <th>FIELD 3</th> 
        <th>FIELD 4</th> 
        <th>FIELD 5</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="item in tF.items | filter:searchFilter"> 
        <td>{{item.CompanyDomainModel.CompanyName}}</td> 
        <td>{{item.RatingDomainModel.RatingValue}}</td> 
        <td>{{item.Views}}</td> 
        <td>{{item.Clicks}}</td> 
        <td>{{item.EmailSent}}</td> 
       </tr> 
      </tbody> 
      <tfoot ng-show='tF.isBusy'> 
       <tr> 
        <td colspan="9"><spinner show="tF.isBusy" /><span class="bold">{{tF.status}}</span> </td> 
       </tr> 
      </tfoot> 
     </table> 

DỊCH VỤ

public ICollection<CompanyStatDomainModel> GetRecordsByPageSize(int page) { 
    const int pgeSize = 20; 
    var result = _companyStatRepo 
    .AllIncluding(c => c.CompanyDomainModel, c => c.RatingDomainModel) 
    .OrderBy(c => c.CompanyStatId) 
    .Skip(page * pgeSize) 
    .Take(pgeSize) 
    .ToList(); 
    return result; 
} 

Endpoint

IHttpActionResult GetRecordsByPageSize(int page) { 
    var companyStatService = new CompanyStatService(); 
    return Ok(companyStatService.GetRecordsByPageSize(page)); 
} 

XẾP HẠNG DOMAIN MODEL

public class RatingDomainModel : IObjectWithState 
{ 
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [DataMember] 
    public int RatingId { get; set; } 

    [DataMember] 
    public int CompanyId { get; set; } 

    [DataMember] 
    public int UserId { get; set; } 

    [DataMember] 
    public int RatingValue { get; set; } 

    [DataMember] 
    public DateTime CreatedDate { get; set; } 

    //[ForeignKey("UserId")] 
    [DataMember] 
    public virtual UserDomainModel UserDomainModel { get; set; } 

    //[ForeignKey("CompanyId")] 
    [DataMember] 
    public virtual CompanyDomainModel CompanyDomainModel { get; set; } 

    [DataMember] 
    public virtual ICollection<CompanyStatDomainModel> CompanyStatDomainModels { get; set; } 

    [NotMapped] 
    public Common.DataObject.State state { get; set; } 

    [NotMapped] 
    public bool InDb 
    { 
     get { return this.RatingId != default(int); } 
    } 

    public object PersistenceEntityId 
    { 
     get { return this.RatingId; } 
    } 
} 

OUTPUT

Please see below URL to see the results I am getting from the API

+1

Lưu ý: Tôi không nghĩ rằng các mã AngularJS hoặc thẻ thêm nhiều giá trị ở đây. Đây thực sự là một câu hỏi liên quan đến ASP.NET Web API, và sẽ là sự thật độc lập với những gì mã khách hàng của bạn được viết. –

+0

Như một sang một bên, bạn có đầu tư rất nhiều vào API và khách hàng của bạn chưa? Nếu không, bạn có thể muốn xem xét thực hiện một bộ điều khiển OData thay thế. OData giải quyết vấn đề này một cách tao nhã bằng cách cho phép phép chiếu được xác định bằng cách sử dụng tham số Chuỗi truy vấn nhất quán. Ví dụ: trong trường hợp này, bạn có thể sử dụng '? $ Expand = RatingDomainModel'. Đây là một sự thay đổi kiến ​​trúc khá lớn, nhưng nếu bạn sớm trong dự án, nó có thể cung cấp thêm lợi ích. –

+0

Ngoài ra, bạn có thể đăng mã từ bộ điều khiển của bạn cho điểm cuối cụ thể này không? Biết cách bạn hiện đang phơi bày các vật thể này sẽ hữu ích. –

Trả lời

14

Added mã dưới đây vào WebApiConfig.cs

config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; 
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None; 
+0

Điều này đã giúp tôi trong thời gian lớn! Tôi gần như đã từ bỏ và bắt đầu xé toạc toàn bộ mô hình dữ liệu của mình. Cảm ơn –

+0

không có vấn đề @JimK –

Các vấn đề liên quan