【问题标题】:Tag Helper vs HTML Helper "Use of IHtmlHelper.Partial may result in application deadlocks"Tag Helper vs HTML Helper “使用 IHtmlHelper.Partial 可能导致应用程序死锁”
【发布时间】:2026-01-14 06:20:04
【问题描述】:

我有一个使用局部视图的 ASP.NET Core MVC 项目。当我编译它时,我收到以下警告:

使用 IHtmlHelper.Partial 可能会导致应用程序死锁。 考虑使用 Tag Helper 或 IHtmlHelper.PartialAsync。

Tag Helper 所做的和 HTML Helper 所做的有什么区别,会导致应用程序死锁?

通过阅读documentation here,我的理解是 Tag Helper 方法旨在使标记更易于阅读并允许 Intellisense 支持。换句话说,我认为这两种方法只是同一事物的不同语法,但显然这里发生了其他事情。

是否应该始终使用标签助手而不是 HTML 助手?

【问题讨论】:

    标签: c# asp.net-core-mvc


    【解决方案1】:

    Tag Helpers 是 ASP.NET Core 的新手,除了你提到的优点之外,值得一提的是:它们由 Razor 在服务器上处理(更健壮、可靠和可维护),你可以非常轻松地创建自己的自定义 TagHelper很简单(实现 ITagHelper 接口或从 TagHelper 类继承并通过定义其实现来覆盖 Process 方法)。

    【讨论】: