根据一些逻辑切换@model

本文关键字:@model | 更新日期: 2023-09-27 18:04:57

是否可以基于某种逻辑切换@model ?

我试着:

switch(somelogic){
    case "a" :
        @model Viewmodel
    case "b" :
        @model InputModel
    ....
}

但它不喜欢。

任何想法?

根据一些逻辑切换@model

当然不是。这相当于在运行时更改变量类型(或泛型类型参数)。我会(其中之一):

  • 编写两个模型可以实现的公共接口
  • 为不同的选项写一个包装器模型类型的属性
  • 使用dynamic
  • 使用object和反射

如果您支持两个模型的相同属性(当您以声明式方式表达表达式时,这将是有意义的),为什么两者都不支持呢:

。有一个模型类型从另一个继承,例如InputModel : ViewModel,或者;b.提取共享属性作为接口的成员,例如IViewModel,并简单地声明@model IViewModel