我有很多继承自抽象类的类。
当我们传递一个封装在继承自它的抽象类中的类时,我试图让 @Html.EditorFor 选择正确的编辑器。
首先在EditorTemplates中寻找一个接受封装在抽象类中的类的文件,如果没有找到,它将通过抽象类的名称来获取编辑器。
在 .NET Framework 中,它开箱即用,但在 Core 中则不然......
例如:
public class Box
{
AbstractClass AC { get; set; }
}
public abstract class AbstractClass
{
}
public class NonAbstractClass1 : AbstractClass
{
}
public class NonAbstractClass2 : AbstractClass
{
}
我们有 cshtml:
AbstractClass.cshtml:
@model AbstractClass
<div>AbstractClass</div>
NonAbstractClass1.cshtml:
@model NonAbstractClass1
<div>NonAbstractClass1</div>
NonAbstractClass2.cshtml:
@model NonAbstractClass2
<div>NonAbstractClass2</div>
Box.cshtml:
@model Box
@Html.EditorFor(x => x.AC)
如果 Box 中的模型是 NonAbstractClass2 包装在 AbstractClass 中,我希望它使用 NonAbstractClass2.cshtml 如果它的 AbstractClass 我想要 AbstractClass.cshtml 等...
有什么提示吗?
得到答案了。
@Html.EditorFor(x => x.AC, Model.AC.GetType().Name)
我想我之前已经尝试过这个,它给我带来了类型异常,但现在它可以工作了,哈哈。