将父ID添加到隐藏字段

Nic*_*lai 4 asp.net-mvc entity-framework razor

我在MVC/Razor/Entity Framework中苦苦挣扎.

我需要创建一个引用父对象的对象.我的模型中有一个名为ParentID的字段,但我无法弄清楚如何用父母的ID填充它.

我认为我的视图中需要一个隐藏字段,然后可能将ParentID放在ViewBag中,并将ViewBag属性指向隐藏字段,但我似乎无法使其工作.

这样的事情是我的假设:

@Html.Hidden("BladeID", ViewBag.ParentBlade)
Run Code Online (Sandbox Code Playgroud)

我不确定我是否已经很好地解释了自己,所以请你离开,我会扩展.

另外,我不确定我这样做是否正确.来自webforms的这对我来说都是全新的.

Ser*_*eit 9

如果ParentID已经在模型中,为什么不直接从那里填充隐藏字段?

@Html.Hidden("BladeID", Model.ParentID)
Run Code Online (Sandbox Code Playgroud)

如果你真的想要填充它,ViewBag你将把它重新投入int(假设它的类型ParentID),因为它ViewBag是类型dynamic:

@Html.Hidden("BladeID", (int)ViewBag.ParentBlade)
Run Code Online (Sandbox Code Playgroud)



根据评论更新

如果您的视图依赖于两个(或更多)单独的模型类,则您始终可以选择为该视图创建自定义视图模型,例如:

public class ParentChildViewModel
{
    public Blade Parent { get; set; }
    public Blade Child { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在视图中使用该类作为模型:

@model ParentChildViewModel
// more view code here
@Html.Hidden("BladeID", Model.Child.ParentID)
Run Code Online (Sandbox Code Playgroud)

也就是说,在我看来,ViewBag在这种情况下使用是没有错的,特别是如果你需要的只是一个属性.