次のプロパティを含むビュー モデルAssetFreezeViewModel.csがあります。
public AssetFreezeAccountBalanceViewModel AccountBalanceInfo { get; set; }
上記の ViewModel に基づいたビューDetails.cshtmlがあり、次の行があります。
@Html.EditorFor(x => x.AccountBalanceInfo)
\Views\Shared\EditorTemplates\ には、テンプレート AssetFreezeAccountBalanceViewModel.cshtmlがあり、その名前は、AssetFreezeAccountBalanceViewModel である AccountBalanceInfo のタイプと同じです (慣例により)。
その EditorTemplate には、次のものがあります。
@Html.EditorFor(model => model.DeviseId)
AssetFreezeAccountBalanceViewModel.csには、次のものがあります。
[UIHint("DropDownList")]
public Int16? DeviseId { get; set; }
public IEnumerable<SelectListItem> DeviseIdList { get; set; }
最後に、 \Views\Shared\EditorTemplates\ にDropDownList.cshtmlがあります(慣例により DeviseId に適用されます):
@model dynamic
@{
var propertyNameLookup = this.ViewData.ModelMetadata.PropertyName + "List";
var property = this.ViewData.ModelMetadata.Container.GetType().GetProperty(propertyNameLookup);
...
}
コードが @Html.EditorFor(model => model.DeviseId) にヒットすると、Containerが null の DropDownList.cshtml に入り、クラッシュします。
ビューから 2 レベル下の EditorTemplate から Container (= 親) にアクセスするにはどうすればよいですか?