根据一些逻辑切换@model

时间:2011-08-07 12:28:04

标签: c# asp.net-mvc-3

是否有可能以某种方式基于某种逻辑切换@model?

我试过了:

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

但它不喜欢。

任何想法?

2 个答案:

答案 0 :(得分:2)

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

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

(按照优先顺序,IMO)

答案 1 :(得分:1)

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

一个。让一种模型类型继承自另一种模型类型,例如InputModel : ViewModel,或; 湾将共享属性提取为接口的成员,例如IViewModel,只需声明@model IViewModel

即可