2012-05-02 31 views
4

我很挣扎,有点MVC/Razor /实体框架。添加一个家长的ID到隐藏字段

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

我想我需要隐藏字段在我的看法,然后可能将ParentID放在ViewBag中,并将该ViewBag属性指向隐藏字段,但我似乎无法得到该工作。

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

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

我不知道我已经解释了自己非常好,所以请你离开,我会扩大。

此外,我不确定我是否以正确的方式进行此操作。这对我来说是非常新的,来自webforms。

回答

9

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

@Html.Hidden("BladeID", Model.ParentID) 

如果你真的想从ViewBag填充它,你将有TOT将它转换回int(假设这是的ParentID类型),因为ViewBagdynamic类型:

@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没有任何问题,特别是如果您只需要一个属性。

+0

它不在模型中。我有两个独立的模型。一个用于父类型,另一个用于子类型。有没有更正确的方法,然后使用ViewBag? – Nicolai

+0

@Nicolai - 我已经更新了我的回答,以反映您评论中的问题。希望这可以帮助 –