Могут ли PartialViews заменить TagHelpers в ASP.NET Core?

Я новичок в ASP.NET Core. Я только что открыл TagHelpers, и, как я понял, теоретически мы должны иметь возможность заменить частичные представления помощниками тегов.

Сверх того, TagHelper могу принять вход, но PartialView нет.

я думаю правильно? или это недоразумение? кто-нибудь может объяснить разницу четко?

Заранее спасибо!

1 ответ

Это для ядра 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" />

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

<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. Это совершенно необязательно.

Надеюсь это поможет

Другие вопросы по тегам