2

次のプロパティを含むビュー モデル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 (= 親) にアクセスするにはどうすればよいですか?

4

1 に答える 1