4

我在使用 MVC / Razor / Entity Framework 时有点挣扎。

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

我想我的视图中需要一个隐藏字段,然后可能将 ParentID 放在 ViewBag 中,并将 ViewBag 属性指向隐藏字段,但我似乎无法让它工作。

像这样的东西,是我的假设:

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

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

另外,我不确定我是否以正确的方式执行此操作。这对我来说都是全新的,来自网络表单。

4

1 回答 1

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在这种情况下使用它并没有错,特别是如果你只需要一个属性。

于 2012-05-02T09:33:38.690 回答