Макет Asp.Net MVC и частичные представления

давайте рассмотрим два представления, которые используют один и тот же макет, состоящий из:

  • левого столбца, содержащего «тело» (которое заполняется по-разному в обоих представлениях)
  • правого столбца, отображающего общую информацию (передается через модель)

Вместо того, чтобы определять правую часть дважды, я подумал, нельзя ли создать PartialView для прямой ссылки со страницы макета.

Проблема в том, что частичные представления неявно наследуют свои модели от представления рендерится. И так как каждое представление имеет свою собственную модель, я получаю несоответствие типа модели в частичном представлении.

Отсюда я вижу два решения:

  • Я мог бы вставить общую часть модели представления в ViewBag. К сожалению, это означает, что каждое представление, использующее этот макет, должно реализовать это «соглашение», но ничто не предупредит разработчика об этом во время компиляции...
  • Я мог бы использовать полиморфизм, чтобы каждая модель представления наследовала от того же базового класса (редактировать: или интерфейса), который использует частичное представление. Это будет работать до определенной степени, но потенциально экспоненциально усложнится, как только у меня появится второй частичный вид в том же макете.

Итак, вот вопросы:

  • Верен ли я в предположениях выше?
  • Вы не видите другой возможности?
  • Есть ли отдача от этого опыта?

Большое спасибо, ТБ.

7
задан Tim Bourguignon 27 June 2012 в 09:26
поделиться