我正在处理ASP.NET MVC 4
申请。我使用EF 5
和Code First
。我有两个实体,1:N关系:
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
,但是如果我只是尝试,那么在我的剃刀视图中:
@Html.HiddenFor(m => m.Documents)
然后当我将表单提交到Post
操作时,我可以看到Documents
属性为null。
如何保持Documents
持久?
答案 0 :(得分:2)
任何带有集合的东西都不会像你期望的那样呈现。你需要创建say,一个期望集合的displaytemplate,然后在HiddenFor中渲染文档的属性,或者如果你不想要一个显示模板,那么在相关的视图上做同样的事情。
例如,这是您需要做的:
@for(int counter = 0; counter < Model.Documents; counter++)
{
@Html.HiddenFor(m => Model.Documents[counter].Id)
@Html.HiddenFor(m => Model.Documents[counter].Title)
// and so on
}
所以现在当你回发时,它拥有引擎绑定所需的所有属性,并将它传递给你的控制器方法并提供它。
答案 1 :(得分:1)