私が気に入っているアプローチは2つあります。
1 つ目は、エンティティ フレームワークのナビゲーション メソッドを使用して簡単に実行できます。
コントローラ:
public ActionResult Details(short id = 0)
{
AccCompany accComp = db.AccCompany.Find(id);
if (accComp == null)
{
return HttpNotFound();
}
return View(accComp);
}
意見:
@model Some.Entities.AccCompany
<div class="displayLabel">
@Html.DisplayNameFor(model => model.Company)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.Company)
</div>
<div class="displayLabel">
@Html.DisplayNameFor(model => model.AccControl.CostCentre)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.AccControl.CostCentre)
</div>
2つ目は、特定のビュー用のカスタム「ビューモデル」を作成し、それをビュー内のモデルとして使用することで、検証に適しています。
SomeViewModel.cs:
public class SomeViewModel
{
[Required]
public string Company { get; set; }
[Required]
[Display(Name = "Cost Centre")]
public string CostCentre { get; set; }
}
次に、それをコントローラーに入力します。
public ActionResult Details(short id = 0)
{
AccCompany accComp = db.AccCompany.Find(id);
if (accComp == null)
{
return HttpNotFound();
}
SomeViewModel vm = new SomeViewModel();
vm.Company = accComp.Comany;
vm.CostCentre = accComp.AccControl.CostCentre;
return View(vm);
}
次に、ビュー:
@model Some.SomeViewModel
<div class="displayLabel">
@Html.DisplayNameFor(model => model.Company)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.Company)
</div>
<div class="displayLabel">
@Html.DisplayNameFor(model => model.CostCentre)
</div>
<div class="displayField">
@Html.DisplayFor(model => model.CostCentre)
</div>
お役に立てれば