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
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. –
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. –
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. –