.NET 8项目升级后Tag Helper失效,该如何修复?
问题描述
我在视图中使用了以下标签:
<input type="hidden" asp-for="ID" value="@Model.ID" />
Views根目录下存在_ViewImports.cshtml文件,内容为:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
该功能在.NET 7中可正常运行,但升级到.NET 8后失效,请问我缺少了什么配置才能使其恢复正常?
解决方案
.NET 8对Tag Helper的行为做了变更:当同时使用asp-for和手动指定原生value属性时,Tag Helper会优先使用模型绑定的值覆盖手动设置的value。如果你的模型ID属性是默认值(比如0或null),最终生成的input的value就会是空或默认值,导致功能失效。
你有两种解决方式:
- 方式一:移除手动设置的
value="@Model.ID",asp-for会自动绑定模型的ID值,无需手动指定:<input type="hidden" asp-for="ID" /> - 方式二:若必须手动控制value值,改用
asp-value属性替代原生value,Tag Helper会正确识别并使用你指定的值:<input type="hidden" asp-for="ID" asp-value="@Model.ID" />
另外确认你的_ViewImports.cshtml中@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers的配置是正确的,不需要额外添加其他Tag Helper引用。
内容的提问来源于stack exchange,提问作者jstuardo
相关产品推荐
相关产品推荐

