私は、MVC でより多くの ViewModel と厳密に型指定された View を理解したいと思っています (そして、今はただの苦痛なので、最終的に感謝しています...)。
私のビューモデル
public class Combined
{
public IEnumerable<Domain> Domains { get; set; }
public IEnumerable<RegInfo> RegInfos { get; set; }
public Combined(IEnumerable<Domain> domains, IEnumerable<RegInfo> reginfos)
{
this.Domains = domains;
this.RegInfos = reginfos;
}
Controllerでは、データをリポジトリから Combined 型のオブジェクトに渡します。
public ActionResult RegDetails(int id = 0)
{
var domain = from x in unitofwork.DomainRepository.Get(n => n.ID == id)
select x;
var reginfo = from y in unitofwork.ReginfoRepository.Get(n => n.ID == id)
select y;
var regdetails = new Combined(domain, reginfo);
return View(regdetails);
}
ビュー (Razor を使用) には @model project.namespace.Combined があるため、2 つのリストを保持するオブジェクトを渡しています。
1/ この @Model.Domain.Name のような各リスト項目にアクセスできないのはなぜですか (素朴な質問ですが、その背後にあるロジックを理解するのを手伝ってください)。join を使用してビューの「レベル」から実行できますが、MVC パターンに完全に反します。これら2つのテーブルを結合する場所はコントローラーだけだと思いますが、まったく新しいオブジェクトが作成されるので、そのためのモデルを作成する必要がありますか?
2/ ビュー (結合、オートマッパー) を設定するために使用できる 2 つ以上のテーブルからデータを保持する IEnumerable オブジェクトを取得するための最良の方法は何ですか?
3/ 1 つの FORM から複数のテーブルに POST するために使用できるモデルを作成できるアプローチはありますか?
前もって感謝します。