Каково различие между Представлением и PartialView в ASP.NET MVC?

Каково различие между Представлением и PartialView в ASP.NET MVC?

На первый взгляд потребность в обоих кажется неочевидной для меня.

37
задан Ben 11 January 2010 в 17:02
поделиться

5 ответов

Трудно понять, как это может стоить: я рекомендую делать это только в крайнем случае и только в том случае, если люди действительно смешивают идентификаторы во время разработки или сообщают о трудностях держать их прямо.

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

int personId;
if (Int32.TryParse(Request["personId"], out personId)) { 
    this.person = this.PersonRepository.Get(new PersonId(personId));
}

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

Я работал над системой, которая сделала это, и она на самом деле не дала никакой ценности. У нас не было двусмысленностей, подобных тем, которые вы описываете, и с точки зрения защиты в будущем, это немного затрудняло внедрение новых функций без какой-либо выгоды. (Тип данных ID не изменился за два года, в любом случае - это может произойти в какой-то момент, но, насколько я знаю, доходность инвестиций для этого в настоящее время отрицательная.)

-121--2991175-

Их можно объявить глобальными в файле c++, если на них нет ссылок в заголовке. Тогда они являются частными для этого класса и не будут загрязнять глобальное пространство имен.

-121--963294-

Теоретически, ответ: Частичное представление - это «подчиненное представление», которое встраивается в основное представление - то, что можно повторно использовать в нескольких представлениях, как боковая панель.

На практике ответ: Очень мало.

В теории, частичные представления более легкие, чем стандартные, но совершенно нормально передавать «обычный» вид в RenderPartial , и производительность кажется точно такой же. Я часто использую обычные представления .aspx как «частичные» представления, потому что вы можете сделать их ссылками на главное представление, чтобы предоставить шаблонное содержимое, как то, что вы можете сделать с UserControls в ASP.NET WebForms. См. здесь .

Частичные представления больше похожи на веб-части портала - это полностью автономные объекты. Используйте их, если макет прост и статичен или если вас раздражают ошибки Intellisense, если в стандартном представлении отсутствуют тэги < html > и < body > .

42
ответ дан 27 November 2019 в 04:41
поделиться

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

Если вы исходите из WebForms, просмотр аналогичен форме веб-контента, в то время как частичный вид - это контроль пользователя.

6
ответ дан 27 November 2019 в 04:41
поделиться

Рассмотрим PartialView, например, контроль в веб-формах, идея является частичным многоразовым

2
ответ дан 27 November 2019 в 04:41
поделиться

Если вы приходите с фона WebForms, подумайте о PartialView как usercontrol.

3
ответ дан 27 November 2019 в 04:41
поделиться

Пытались ли вы сделать элементы гаджета встроенными и выровнять их по центру с выравниванием текста?

#gadget-wrapper {
    ...
    text-align: center;
}

.gadget {
    display: inline;
    float: none;
}

Это может сработать, я просто не уверен, как будут вести себя элементы уровня блока внутри (я не могу проверить это прямо сейчас). Можно также попробовать inline-block вместо inline .

-121--4780383-

Для выполнения любого вида ввода-вывода исполняемый файл должен взаимодействовать с операционной системой с помощью sys-вызовов. в Windows это вызовы Win32 API и в linux/unit это в основном posix вызовы.

Кроме того, формат исполняемого файла отличается от ОС, путь PNG-файл отличается от GIF-файла. данные упорядочиваются по-разному, и существуют различные заголовки и подзаголовки.

-121--2147990-

Посмотрите на StackOverflow.com сайт: Основной сайт (View) содержит компоненты, такие как

  • Тэги
  • Связанные
  • Ad

Поэтому Тэги, связанные, Ad и т.д. могут быть составлены как PartiveViews. Преимущество этого в том, что PartityView можно просто кэшировать с помощью OutputCache вместо воссоздания всех сайтов: повышение производительности.

3
ответ дан 27 November 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: