これは私には痛々しいほど明白に思えますが、何らかの理由で私はそれを私が望むように動作させることができません。おそらく私がそれをしている方法は不可能ですが、それはありそうもないようです。この質問は多少関連している可能性があります:同じページ上のASP.NETMVCモデルバインディング関連エンティティ。
複数の関連するエンティティ参照を持つエンティティを編集するための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にアクションパラメーターを追加してから、値をモデル定義に手動でコピーする必要がありますか?