Это для ядра asp.net 2.1 +
Если я правильно понимаю ваш вопрос, вы можете заменить все ваши частичные представления HtmlHelper вашими собственными TagHelpers, но вы уже смогли сделать это с HtmlHelpers, так что это не что-то новое.
Однако существует разница между HtmlHelpers
, TagHelpers
и частичным просмотром.
Частичные виды
Частичное представление - это файл разметки Razor (.cshtml), который отображает вывод HTML в выводе другого файла разметки. Например, _partial.cshtml
.
HtmlHelper
HtmlHelpers были введены в инфраструктуру MVC для возможности рендеринга html-сервера. Легко различается по символу @
в видах бритвы.
@await Html.PartialAsync("_partial.cshtml", Model.Contact)
Кроме того, TagHelper может принимать ввод, а PartialView - нет.
Второй параметр в PartialAsync
допускает ввод.
TagHelper
С asp.net-core TagHelpers - это еще один способ отобразить html на стороне сервера, используя теги и атрибуты в бритвенных представлениях. Помимо html дружественных представлений, он обеспечивает меньшую абстракцию от html. В приведенном ниже коде я использую Partial TagHelper, где атрибут name определяет путь или имя представления, а атрибут for назначает выражение модели, которое будет оцениваться (@ Model). Это означает, что вам не нужно использовать for="@Model.Contact"
и просто просто for="Contact"
.
<partial name="_partial" for="Contact" />
Вы также можете использовать атрибут model , который просто передает модель в частичное представление при создании экземпляра.
<partial name="_partial" model='new Contact { Id = 1, Name = "Nick" }' />
Как видно из вышеизложенного, TagHelpers и HtmlHelpers могут отображать частичные представления.
Кроме того, если вы посмотрите на gitub asp.net-core для HtmlHelper
https://github.com/aspnet/Mvc/blob/b18526cdc8d8c868e8d7f9c6c8484064215e1002/src/Microsoft.AspNetCore.Mvc.ViewFeatures/HtmlHelper.cs#L554
и сравните его с TagHelper
https://github.com/aspnet/Mvc/blob/b18526cdc8d8c868e8d7f9c6c8484064215e1002/src/Microsoft.AspNetCore.Mvc.TagHelpers/PartialTagHelper.cs#L216
Оба на самом деле вызывают и IView.RenderAsync()
и передают ViewContext
, который включает частичное представление. Таким образом, они фактически делают то же самое в коде, за исключением того, как он манипулирует html.
Примечания:
- Так же, как и HtmlHelpers, вы также можете создавать свои собственные TagHelpers, которые могут заменить целые частичные представления.
- TagHelpers не должен заменять HtmlHelpers, но обеспечивает альтернативный подход. Однако, на мой взгляд, TagHelpers лучше. Они визуализируются лучше в редакторе Visual Studio (используемые страницы бритвы имеют много проблем с форматированием из-за @HtmlHelpers), более удобочитаемы и соответствуют HTML.
- В частичном
TagHelper
вы можете использовать либо model
, либо for
для предоставления данных частичному, но не оба одновременно.
- Пропуск .cshtml из имени просто заставит каркас искать вид в папках Pages, Views и Shared. Это совершенно необязательно.
Надеюсь, это поможет