2011-01-21 2 views
4

Я просто ищу, как эти два разные, и каковы их плюсы и минусы?Каковы различия между шаблонами редакторов и частичными представлениями?

Кажется, вы можете делать все с частичными видами, которые вы можете делать с помощью шаблонов.

+0

Вопрос не имеет ничего общего с Razor или MVC3, поэтому я изменил заголовок и ключевые слова –

+0

Извините, но вы только что изменили вопрос в соответствии с вашим ответом? =) Pls, см. Следующую ссылку (это то, о чем я говорил): http://stackoverflow.com/questions/4383554/asp-net-mvc-3-razor-templates-vs-renderpartial – Andrei

ответ

6

Если вы имеете в виду EditorTemplates (а не встроенные шаблоны), то есть некоторые большие различия. Во-первых, частичные представления требуют, чтобы вы указывали свое представление, когда используете их, а шаблоны работают над типом объекта данных.

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

В-третьих, шаблонам передается дополнительная информация, частичное представление которых отсутствует, в частности, вы получаете метаданные модели, такие как созданные атрибутами.

+0

Не так ли? получить ModelMetadata на частичных тоже? Я думал, что ModelMetadata является свойством ViewData и не специфична для шаблонов Display & Editor. – danludwig

+0

@olivehour - Да, свойство есть, но оно имеет значение null, когда вы обращаетесь к нему с точки зрения или частичного. Он заполнен только шаблонами. –

0

, если вы имеете в виду «встроенные помощники», это просто более простой способ создания эквивалента методов расширения HtmlHelper, но они предназначены только для использования в конкретном представлении. частичные представления, с другой стороны, могут иметь больше логики позади них (через их контроллер), не нарушая MVC, и их можно легко повторно использовать из нескольких видов.

+0

Нет, он ссылается на систему шаблонов «EditorFor» и «DisplayFor». –

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