在显示模板中使用一个隐式转换为声明的@model的模型
本文关键字:一个 转换 声明 模型 @model 显示 | 更新日期: 2023-09-27 18:18:08
我有以下类:
public class MyClass
{
public int Number {get; set;}
}
和扩展版本:
public class ExtendedMyClass
{
public MyClass Data {get; set;}
public ExtendedMyClass(MyClass data)
{
Data = data;
}
public static implicit operator ExtendedMyClass(MyClass data) => return new ExtendedMyClass(data);
}
在显示模板中我有@model ExtendedMyClass
我希望能够做到以下几点:
foreach(var item in AllData)/* AllData is a list that contains a mix of MyClass and ExtendedMyClass*/
{
@Html.DisplayFor(m => item)
}
但是我得到以下错误:
传入字典的模型项的类型是'MyClass',但是这个字典需要一个'ExtendedMyClass'类型的模型项
是否有一种方法可以在不滚动自定义IModelBinder实现的情况下工作?
运行时不知道应该使用哪种类型。它只能看到原始类型。只需使用显式转换:
var extended = (ExtendedMyClass)item;
@Html.DisplayFor(m => extended)