asp.net-mvc - 将父 ID 添加到隐藏字段

标签 asp.net-mvc entity-framework razor

我在 MVC/Razor/Entity Framework 方面有点挣扎。

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

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

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

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

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

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

最佳答案

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

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

如果你真的想从 ViewBag 填充它你必须把它扔回 int (假设这是 ParentID 的类型),因为 ViewBag类型为 dynamic :
@Html.Hidden("BladeID", (int)ViewBag.ParentBlade)

根据评论更新

如果您的 View 依赖于两个(或更多)单独的模型类,您始终可以选择为该 View 创建自定义 View 模型,例如:
public class ParentChildViewModel
{
    public Blade Parent { get; set; }
    public Blade Child { get; set; }
}

然后在您的 View 中使用该类作为模型:
@model ParentChildViewModel
// more view code here
@Html.Hidden("BladeID", Model.Child.ParentID)

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

关于asp.net-mvc - 将父 ID 添加到隐藏字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411060/

相关文章:

asp.net-mvc-3 - MVC3 Razor 模型绑定(bind)器和继承的集合

javascript - 级联下拉菜单

c# - Entity Framework 6 Dbgeometry.WellKnownValue.WellKnownBinary 未被填充

asp.net - 预编译 View : can I still read the contents at runtime?

c# - 使用 Entity Framework 的最佳比较算法

entity-framework - EF 代码优先并初始化多个上下文

asp.net-mvc - ASP.NET MVC Razor View 中的 Html.Raw()

javascript - 如何避免在此 EditorTemplate 中放置 javascript?

html - Razor 语法导致 jQuery Mobile 表单元素丢失样式

c# - 从 Viewbag.List 中查找项目