将父ID添加到隐藏字段

时间:2012-05-02 09:30:09

标签: asp.net-mvc entity-framework razor

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

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

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

这样的事情,是我的假设:

@Html.Hidden("BladeID", ViewBag.ParentBlade)

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

另外,我不确定我是以正确的方式做这件事。这对我来说非常新,来自webforms。

1 个答案:

答案 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并没有错,特别是如果您只需要一个属性。