为什么我会收到此警告:'@Model.property'不是属性"已检查"的有效值?



>我有几个复选框,用于显示"真"和"假"。每个人都会向我显示上述警告(为了搜索目的,我使警告更加通用。实际上,它读取@Model.Service_Request_Information.Servicelead等,而不是@Model.property(

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

我已经读到可以像这样编写剃须刀代码,HTML 将根据值从属性中插入/省略"选中"。它非常适合我想要的方式,并且不会阻止我的代码编译。那么,关于我为什么收到此警告的任何想法?

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

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

>选项> HTML>验证的文本编辑器>

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

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

选中的属性没有值。仅当@item.Servicelead为 true 时,才应设置它。

请改用以下代码:

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

最新更新