次のコレクションを持つ ViewModel がありWidget<dynamic>
ます。
public class Widget<T>
{
public string ViewName { get; set; }
public T Data { get; set; }
}
View では、ウィジェットのコレクションをループして を呼び出しますHtml.Partial
。
@foreach (var widget in Model) {
@Html.Partial(widget.ViewName, widget)
}
これは、パーシャルに動的モデルまたは のモデルがある場合に機能しWidget<dynamic>
ます。
ただし、部分ビュー内でインテリセンスが必要なため、ビューに適切なウィジェット データ型のモデルを指定します。
@model Widget<string>
@Html.Partial
残念ながら、動的モデルを System.Object としてキャストすると、例外がスローされます。
部分内でウィジェットを手動で再度キャストする以外にHtml.Partial
、動的モデルをオブジェクトとしてキャストせずに呼び出す方法はありますか?