我試圖得到一個SPA以下基本工作模式:spa結束如何訪問祖父母實體?
public class Owner
{
public int OwnerId { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<TodoItem> TodoItems { get; set; }
}
public class TodoItem
{
public int TodoItemId { get; set; }
[Required]
public string Title { get; set; }
public bool IsDone { get; set; }
public int OwnerId { get; private set; }
public virtual Owner Owner { get; set; }
public virtual ICollection<ActionItem> ActionItems { get; set; }
}
public class ActionItem
{
public int Id { get; set; }
public string Name { get; set; }
public int TodoItemId { get; private set; }
public virtual TodoItem TodoItem { get; private set; }
}
在我看來,我嘗試這樣做:
<div data-bind="foreach: ActionItem">
<div data-bind="attr:{id:Id}">
<span data-bind="text: Name"></span><br /> <!-- works -->
<span data-bind="text: TodoItem().Name"></span><br /> <!-- doesn't work -->
<span data-bind="text: TodoItem().Owner().Name"></span> <br /> <!-- doesn't work -->
</div>
</div>
我也嘗試添加一個計算的屬性ActionItem含業主名稱:
public string OwnerName
{
get { return this.TodoItem.Owner.Name; }
}
,並呼籲:
<span data-bind="text: OwnerName"></span><br /> <!-- doesn't work -->
,但如果我添加不同的靜態字符串和手動設定值:
public string SomethingElse { get; set; }
那麼這工作得很好:
<span data-bind="text: SomethingElse"></span><br /> <!-- works -->
我在做什麼錯?
乾杯
如何看您的控制器?你在TodoItem查詢中做了一個Include「Owner」嗎? 此外,這可能會導致循環引用... paret-chidl-parent引用並沒有真正覆蓋,因爲它看起來現在。這將導致序列化中的無限循環。 因爲這個原因,我創建了一個DTO,我們只能通過他的字符串名稱,id來引用父對象,而不是對父對象的完整引用。 – Obiwan007 2012-03-24 07:23:26
嘿 - 對於遲到的回覆感到抱歉。我不得不離開機器一會兒:)循環引用錯誤正是我得到的,在經過大量研究後,似乎用json.net替換serialiser的替代修復會導致其他問題。所以看起來我現在必須堅持使用mvc3並稍後更新。使用字符串鍵是一個好主意 - 今晚我會嘗試。 – nugget 2012-03-27 06:07:29