2009-05-12 4 views
13

Есть много вопросов о SO относительно View Engine в ASP.Net MVC и об использовании «пользовательских» вместо вместо «по умолчанию». Для меня, как программиста по хобби, термин «View Engine» является новым, и я не мог понять, что это значит. Итак, мои вопросы:Что такое ASP.Net MVC View Engine?

  1. Что такое механизм просмотра?

  2. Что делает механизм просмотра, и какую роль в шаблоне MVC он играет? (Близко связано с 1 ...)

  3. Каковы основные характеристики/свойства по умолчанию View Engine, которые программисты хотят изменить/избежать, переключившись на другую систему просмотра?

  4. Каковы основные преимущества обычных других View Engine, которые разработчики после того, когда они решили использовать другой, чем стандарт? (Я видел имя «Spark View Engine» кучу раз, и я уверен, что есть и другие).

  5. Когда (в каких сценариях) я хочу разработать свой собственный механизм просмотра?

Там, я думаю, это все, что я хочу задать (на данный момент). Дайте мне View Engine 101! =)

+0

Если это должна быть вики сообщества, пожалуйста, дайте мне знать. –

+0

я так не думаю – TStamper

ответ

5

«Механизм просмотра» обрабатывает рендеринг вида html, xml или любого другого типа контента, созданного для его испускания. Внутри «MVC» это будет аспект View (V).

Различные механизмы просмотра имеют разные синтаксисы и т. Д. Для управления рендерингом. Решение использовать другой механизм просмотра, скорее всего, очень специфично для проекта/программиста. В некоторых случаях они могут видеть фактическое или предполагаемое ограничение механизма просмотра по умолчанию; в других случаях это может быть просто другая цель дизайна или фокус.

Что касается Spark, то их внимание должно быть гораздо более тонким, чем механизм просмотра по умолчанию, и как можно больше оставаться в синтаксисе, подобном HTML, вместо того, чтобы бросаться в блоки сценариев ASP.NET.

Как конечный пользователь, единственный раз, когда вы захотите создать свой собственный механизм просмотра, вероятно, никогда. ;) Это не задача, которую нужно воспринимать легкомысленно, и вы, вероятно, в конечном итоге переустановите функциональность, которая уже существует в существующем механизме просмотра.

Редактировать

OK. Так что файлы View.aspx составляют часть View Engine, или это View Engine набор классов, которые помогают выбрать , который View.aspx (или другой тип ответа ), который должен отображаться? Как работает ?

Шаблон MVC сообщает, что ваша модель, просмотр и контроллер будут отдельными «вещами». В ASP.NET MVC механизм представления по умолчанию использует существующую структуру ASP.NET, которая включает в себя мастер-страницы, файлы ASPX и т. Д. Spark делает что-то подобное, но это другой движок, поэтому он не работает точно так же. Таким образом, в общем смысле файлы представления не зависят от конкретного компьютера, но конкретные файлы, их макет на диске и их содержимое : view-engine specific.

+0

OK. Также являются ли файлы View.aspx частью механизма просмотра или является ли в представлении Engine набор классов, которые помогают выбрать, какой вид View.aspx (или другой тип ответа) должен быть отображен? Как это работает? –

1

В дополнение к желанию полностью заменить механизм просмотра (например, Spark), вы также можете создать свой собственный механизм просмотра, чтобы внести небольшое изменение в поведение механизма представления по умолчанию. Вы можете сделать это, создав новый механизм представления, который наследует от механизма по умолчанию и отменяет некоторое поведение.

Одним из распространенных примеров является то, что механизм просмотра выглядит на жестком диске для файлов .aspx. Например, вам может потребоваться создать механизм просмотра, который автоматически переключает файл view.aspx на основе того, находится ли пользователь на мобильном устройстве.

См. Mobile Web Sites with ASP.NET MVC and the Mobile Browser Definition File для действительно хорошего примера реализации этого.

Update:

Скотт просто разместил updated ViewEngine implementation, что имеет важные улучшения по сравнению с первоначальной реализации связаны выше.

Смежные вопросы