警告'@(!isEditing || ...)'不是属性'disabled'的有效值?

时间:2019-12-12 20:59:56

标签: asp.net-core razor blazor

(已在Visaul Studio 2019 V16.4.0或V16.4.1中进行了尝试。已添加Microsoft.CodeAnalysis.FxCopAnalyzers)

我在Blazor中使用以下代码来禁用输入。

<input type="checkbox" @bind="@v" disabled="@(!isEditing || ...expression omitted...)" />

但是,Visual Studio会警告

  

警告'@(!isEditing || ...)'不是属性'disabled'的有效值

通过自定义逻辑禁用输入的正确方法是什么?

Warnings

4 个答案:

答案 0 :(得分:0)

html disabled属性可接受的值是 disabled 或没有值。
最简单的方法是使用@if语句:

@if(!isEditing || ...omitted...)
{
   <input type="checkbox" @bind="@v" disabled />
}
else
{
   <input type="checkbox" @bind="@v" />
}

答案 1 :(得分:0)

使用三元表达式:

<input type="checkbox" @bind="@v" @((!isEditing || ...expression omitted...) ? "disabled" : "") />

答案 2 :(得分:0)

这是一个错误。

使用Razor语法设置禁用属性时的HTML警告#16833 https://github.com/aspnet/AspNetCore/issues/16833

更新

将Visual Studio升级到V16.4.2后,所有警告均消失。

答案 3 :(得分:-1)

目前尚不清楚您的问题是什么。 Blazor内置了suport可以将disabled=boolhidden=bool等转换为当前/不存在的属性。

以下控件完全可以在我的PC上正常运行(Blazor Server,Core 3.1,VS 16.4.0)。
没有警告。

<input type="checkbox" @bind="@v" disabled="@(!isEditing || currentCount>5)" />