EditorFor 用于派生类,当将其包装为抽象类时

问题描述 投票:0回答:1

我有很多继承自抽象类的类。

当我们传递一个封装在继承自它的抽象类中的类时,我试图让 @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 等...

有什么提示吗?

user-interface .net-core inheritance abstract-class editorfor
1个回答
0
投票

得到答案了。

@Html.EditorFor(x => x.AC, Model.AC.GetType().Name)

我想我之前已经尝试过这个,它给我带来了类型异常,但现在它可以工作了,哈哈。

© www.soinside.com 2019 - 2024. All rights reserved.