这对我来说似乎很痛苦,但由于某种原因,我无法让它按照我想要的方式工作。也许我这样做是不可能的,但这似乎不太可能。这个问题可能有点相关:ASP.NET MVC Model Binding Related Entities on Same Page。
我有一个 EditorTemplate 来编辑具有多个相关实体引用的实体。呈现编辑器时,会为用户提供一个下拉列表以从中选择相关实体,下拉列表返回一个 ID 作为其值。
<%=Html.DropDownListFor(m => m.Entity.ID, ...)%>
发送请求时,表单值按预期命名:“Entity.ID”,但是我定义为操作参数的强类型模型没有填充请求中传递的值的 Entity.ID。
public ActionResult AddEntity(EntityWithChildEntities entityWithChildEntities) { }
我尝试摆弄 Bind() 属性并Bind(Include = "Entity.ID")
在 entityWithChildEntities 上指定,但这似乎不起作用。我也尝试过Bind(Include = "Entity")
,但这导致 ModelBinder 尝试绑定完整的“实体”定义(不足为奇)。
有没有办法让默认模型绑定器填充子实体 ID,或者我需要为每个子实体的 ID 添加操作参数,然后手动将值复制到模型定义中?