Переключатель @model на основе некоторой логики - PullRequest
1 голос
/ 07 августа 2011

Можно ли как-то переключать @model на основе какой-то логики?

я пробовал:

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

но это не нравится.

какие-нибудь идеи? ** 1008

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

Не AFAIK. Это эквивалентно изменению переменной type (или аргумента универсального типа) во время выполнения. Я бы (один из):

  • написать общий интерфейс, который две модели могут реализовать
  • написать тип модели оболочки со свойствами для различных опций
  • использовать dynamic
  • использование object и отражение

(в порядке предпочтения, IMO)

1 голос
/ 07 августа 2011

Если вы поддерживаете одни и те же свойства для обеих моделей (что будет иметь смысл, если вы выражаете выражения в декларативном стиле), почему бы и нет:

a.Имейте один тип модели, наследующий от другого, например InputModel : ViewModel или;б.Извлеките общие свойства как элементы интерфейса, например, IViewModel, и просто объявите @model IViewModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...