Почему мы должны использовать компоненты компонента MVC 6 для частичного просмотра: в чем разница?

MVC 6 Введенные компоненты View и говорят, что они намного прочнее и гибки, чем частичные виды. Так что замена для частичного просмотра? Какова на самом деле разница между ними.

Ответ 1

Согласно этой ссылке - https://docs.asp.net/en/latest/mvc/views/view-components

Новое для ASP.NET MVC 6, компоненты просмотра (VC) похожи на частичные представления, но они намного мощнее. VC включают те же преимущества разделения и возможности тестирования, которые можно найти между контроллером и представлением. Вы можете думать о VC как мини-контроллере, который отвечает за рендеринг фрагмента, а не за весь ответ.

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

Существует подробное сообщение для компонентов ASP.NET View. http://www.tugberkugurlu.com/archive/exciting-things-about-asp-net-vnext-series-mvc-view-components

Ответ 2

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

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

Компоненты просмотра не совпадают с дочерними действиями.

Ответ 3

ViewComponents также используются, когда вам требуется частичное представление, которое требует модели для вызова в _Layout. Чтобы избежать написания кода С# для создания модели в макете, лучше всего использовать ViewComponent, который может использовать службы, настроенные для приложения, такие же, как и контроллеры, путем инъекции зависимостей.