давайте рассмотрим два представления, которые используют один и тот же макет, состоящий из:
- левого столбца, содержащего «тело» (которое заполняется по-разному в обоих представлениях)
- правого столбца, отображающего общую информацию (передается через модель)
Вместо того, чтобы определять правую часть дважды, я подумал, нельзя ли создать PartialView для прямой ссылки со страницы макета.
Проблема в том, что частичные представления неявно наследуют свои модели от представления рендерится. И так как каждое представление имеет свою собственную модель, я получаю несоответствие типа модели в частичном представлении.
Отсюда я вижу два решения:
- Я мог бы вставить общую часть модели представления в ViewBag. К сожалению, это означает, что каждое представление, использующее этот макет, должно реализовать это «соглашение», но ничто не предупредит разработчика об этом во время компиляции...
- Я мог бы использовать полиморфизм, чтобы каждая модель представления наследовала от того же базового класса (редактировать: или интерфейса), который использует частичное представление. Это будет работать до определенной степени, но потенциально экспоненциально усложнится, как только у меня появится второй частичный вид в том же макете.
Итак, вот вопросы:
- Верен ли я в предположениях выше?
- Вы не видите другой возможности?
- Есть ли отдача от этого опыта?
Большое спасибо,
ТБ.
задан Tim Bourguignon 27 June 2012 в 09:26
поделиться