为什么我收到此警告:“@Model.property”不是属性 'checked' 的有效值?

Why do I get this warning: '@Model.property' is not a valid value of attribute 'checked'?

我有几个复选框用于显示 'true' 和 'false'。每个人都会向我显示上述警告(出于搜索的目的,我使警告更通用。实际上,它显示为 @Model.Service_Request_Information.Servicelead 等,而不是 @Model.property)

<input class="custom-control-input" type="checkbox" checked="@item.Servicelead" disabled />

我读到可以像这样编写剃刀代码,HTML 会根据值从属性中 insert/leave 输出 'checked'。它非常适合我想要的方式,并且不会阻止我的代码编译。那么,关于我收到此警告的原因有什么想法吗?

选中的属性没有值。它应该只在 @item.Servicelead 为真时设置。

改用此代码:

<input class="custom-control-input" type="checkbox" @(item.Servicelead? "checked" : "") disabled />

如果您传递给它的表达式的计算结果为 true,Razor 将呈现一个布尔属性。如果表达式的计算结果为 false,则根本不会呈现该属性。这就是您在示例中使用的 Razor 功能。

在 HTML 中,checked 属性的有效值为空字符串或“选中”(Specs),即 checkedchecked="checked"。 Visual Studio 默认情况下将 HTML 错误报告为警告,这就是您所看到的。您可以忽略它,关闭 HTML 验证:

工具 > 选项 > 文本编辑器 > Html > 验证

或者您可以使用其他答案所展示的三元表达式:

@(item.Servicelead? "checked" : "")