Могут ли 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
и сравнить его с TagHelper
Оба на самом деле звонят и IView.RenderAsync()
и проходя в ViewContext
который включает в себя частичное представление. Таким образом, они фактически делают то же самое в коде, за исключением того, как он манипулирует html.
Примечания стороны:
- Подобно HtmlHelpers, вы также можете создавать свои собственные TagHelpers, которые могут заменить целые частичные представления.
- TagHelpers не должен заменять HtmlHelpers, но обеспечивает альтернативный подход. Однако, на мой взгляд, TagHelpers лучше. Они визуализируются лучше в редакторе Visual Studio (используемые страницы бритвы имеют много проблем с форматированием из-за @HtmlHelpers), более удобочитаемы и соответствуют HTML.
- В частичном
TagHelper
Вы можете использовать либоmodel
или жеfor
предоставлять данные частичному, но не обоим. - Пропуск.cshtml от имени просто заставит платформу искать представление в папках Pages, Views и Shared. Это совершенно необязательно.
Надеюсь это поможет