我正在處理ASP.NET MVC 4
應用程序。我使用EF 5
和Code First
。我有兩個實體1:N關係:如何在剃刀中的請求之間持久保存ICollection實體屬性
public class Menu
{
//some properties
public virtual ICollection<Document> Documents { get; set; }
}
和:
public class Document
{
//some properties..
public int MenuID { get; set; }
public virtual Menu Menu { get; set; }
}
我有Edit
視圖與[HttpPost]
和[HttpGet]
方法。當我穿過GET
動作這樣的模式:
Menu model = unitOfWork.MenuRepository.GetById(Id);
if (model != null)
{
return View(model);
}
一切是正確的,我可以看到,模型包含1 Documents
但後來在我的Razor視圖,如果我只是嘗試:
@Html.HiddenFor(m => m.Documents)
然後當我將表單提交到Post
操作時,我可以看到Documents
屬性爲空。
如何保持Documents
持久?
嗯,我只是爲了它而試過。首先 - 它似乎不能對'ICollection'使用'[]'索引器,其次,即使我將實體中的類型更改爲其他類型,它仍然不是一個非常優雅的解決方案。 – Leron
嗨@Leron--對不起,我在腦海裏想你不會使用ICollection,但我腦中的一部分卻在說「是的,他在標題中是這麼說的」。解決方案可能不夠高雅,但這是如何做到的。我和你在同一艘船上,而且這個工作。更好的方法是使用這些代碼,但在顯示或編輯器模板中,所以您只需引用它,然後讓模板完成這項工作。你可以使用ToList()來給你索引器能力 –
只是添加,你確實需要索引器,否則MVC引擎將無法正確地綁定回來。事實上它不會這樣做。這就是引擎的工作原理。我以前嘗試過很多方法,而這是唯一的方法 - 我也讀過一篇博客文章(現在不記得哪一個),證實了同樣的事情。 –