ASP.NET MVC-将儿童实体绑定到模型
-
22-10-2019 - |
题
这对我来说似乎很痛苦,但是由于某种原因,我无法按照我想要的方式来处理它。也许不可能像我这样做的方式那样,但这似乎不可能。这个问题可能有些相关: 同一页面上的ASP.NET MVC模型相关实体.
我有一个编辑图板来编辑具有多个相关实体参考的实体。渲染编辑器后,给用户一个下拉列表以从中选择相关实体,下拉列表返回ID作为其值。
<%=Html.DropDownListFor(m => m.Entity.ID, ...)%>
当请求发送时,表单值的命名如预期:“ Entity.ID”,但是我强烈键入的模型定义为一个操作参数没有实体。ID填充了请求中传递的值。
public ActionResult AddEntity(EntityWithChildEntities entityWithChildEntities) { }
我尝试摆弄绑定()属性并指定 Bind(Include = "Entity.ID")
在实体WithChildentities上,但这似乎不起作用。我也尝试了 Bind(Include = "Entity")
, ,但这导致了模型的尝试绑定完整的“实体”定义(毫不奇怪)。
有什么方法可以使默认模型活页夹填充子实体ID,或者我需要为每个子实体的ID添加操作参数,然后手动将值复制到模型定义中?
解决方案
您看过汽车驾驶商吗?我同意这不需要,因为绑定应该起作用,但是...
我使用了一些困难 Html.XYZFor
助手并恢复使用MVC 1.1符号,并且一切都起作用。
其他提示
没有 DropDownListFor
使用一个参数的辅助方法。标准 下拉列表 方法至少采用两个参数:第一个是用于计算选择名称的lambda,第二个是一个 IEnumerable<SelectListItem>
:
<%= Html.DropDownListFor(m => m.Entity.ID, Model.EntitiesList) %>
还如何 EntityWithChildEntities
类型看起来像?一定是这样:
public class EntityType
{
public string ID { get; set; }
}
public class EntityWithChildEntities
{
public EntityType Entity { get; set; }
public IEnumerable<SelectListItem> EntitiesList
{
get
{
return new[]
{
new SelectListItem { Value = "1", Text = "foo" },
new SelectListItem { Value = "2", Text = "bar" },
}
}
}
}
不隶属于 StackOverflow