MVC在编辑器中转换
本文关键字:转换 编辑器 MVC | 更新日期: 2023-09-27 18:20:22
如果在编辑器模板内进行强制转换,如何正确绑定到模型?输入的名称会是什么样子?
所以我有一点复杂的Model
,其中一个属性是一个类,例如Shape
,它被其他类扩展,例如Square
和Circle
。因此,我在尝试绑定到Model
:的Shape
属性时遇到了问题
@Html.RadioButtonFor(m => (m.Shape as Square).Something, "Yes")
@Html.RadioButtonFor(m => (m.Shape as Square).Something, "No")
在POST
请求中,Shape
属性在模型中显示为null
。
有人能把我推向正确的方向吗?输入的formcollection键应该是什么样子的???
MethodInfo
)。
不幸的是,你的复杂表达式破坏了他们的算法。这很好,它意味着快速,而不是非常灵活。
至于修复,我只需要添加一个Square
属性(public Square SquareAccessor => Shape as Square;
)并绑定到它。我在这里假设,如果您到达该分支,那么您假设强制转换是有效的,如果没有抛出一些null
检查。
我在上面找到的唯一解决方法是将其转换为视图变量,该变量的名称正是您在"name"属性中需要的名称
@{
var Shape = Model.Shape as Square;
}
@Html.RadioButtonFor(m => Shape.Something, "Yes")
@Html.RadioButtonFor(m => Shape.Something, "No")
通过这种方式,html将被正确呈现,但这仍然是一种变通方法-不是一个干净的解决方案