プロパティの 1 つが編集可能なエンティティである編集フォームでの ViewModel の使用について混乱しています。
ViewModel
Entity
Actions
ビュー ページの上部にあるモデルの宣言:
@model MyProject.Models.ViewModel
いいえ
@model MyProject.Models.Entity
では、更新が必要なエンティティ プロパティを表す最善の方法は何でしょうか。私は最初にそれから変数を作り始めました。
Entity myEntity = ViewModel.Entity;
したがって、各フォーム要素の編集フィールドは次のように表すことができます。
@Html.EditorFor(model => myEntity.Name)
しかし、post アクションの Model Binding パラメーターはどうなるでしょうか?
[HttpPost]
public ActionResult Edit(Entity myEntity)
db.Entities.Attach(myEntity);
db.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified);
db.SaveChanges();
したがって、この質問は、単純なモデルとして渡すことができる特定のエンティティ オブジェクトとは対照的に、ViewModel で編集可能なプロパティ オブジェクトを処理する方法に関するものです。
おそらく簡単に答えてください。
よろしくお願いします。
編集:
View 内の ViewModel からドメイン オブジェクトを参照する方法に関するフィードバック。ラムダ式でそれらを直接参照すると、派生 ID を使用して返された ViewModel をナビゲートできるため、モデル バインディングが正常に機能することがわかりました。ビューでローカル変数を使用すると、この変数名が Id で使用され、ViewModel モデル バインディング マッピングが壊れます。