我在MVC / Razor / Entity Framework中苦苦挣扎。
我需要创建一个引用父对象的对象。我的模型中有一个名为ParentID的字段,但是我无法弄清楚如何用父母的ID填充它。
我认为我的视图中需要一个隐藏字段,然后可能将ParentID放在ViewBag中,并将ViewBag属性指向隐藏字段,但我似乎无法使其工作。< / p>
这样的事情,是我的假设:
@Html.Hidden("BladeID", ViewBag.ParentBlade)
我不确定我是否已经很好地解释了自己,所以请你离开,我会扩展。
另外,我不确定我是以正确的方式做这件事。这对我来说非常新,来自webforms。
答案 0 :(得分:9)
如果ParentID
已经在模型中,为什么不直接从那里填充隐藏字段?
@Html.Hidden("BladeID", Model.ParentID)
如果您真的想要从ViewBag
填充它,则必须将其重新投放回int
(假设这是ParentID
的类型),因为ViewBag
}类型为dynamic
:
@Html.Hidden("BladeID", (int)ViewBag.ParentBlade)
根据评论更新
如果您的视图依赖于两个(或更多)单独的模型类,您可以随时选择为该视图创建自定义视图模型,例如:
public class ParentChildViewModel
{
public Blade Parent { get; set; }
public Blade Child { get; set; }
}
然后在视图中使用该类作为模型:
@model ParentChildViewModel
// more view code here
@Html.Hidden("BladeID", Model.Child.ParentID)
那就是说,在我看来,在这种情况下使用ViewBag
并没有错,特别是如果您只需要一个属性。