使用默认的占位符字符串将验证添加到InputSelect

问题描述

我正在使用InputSelect,例如:

<InputSelect @bind-Value="ExampleName">
    <option>---</option>
    @foreach (var item in itemList)
    {
        <option>@item.Name</option>
    }
</InputSelect>
<ValidationMessage For="@(() => ExampleName)" />

验证是这样实现的:

[required(ErrorMessage = "Custom error message")]
public string ExampleName { get; set; }

如果我从输入选择中未选择任何内容,则验证工作正常,因为ExampleName不包含任何内容,因此[required]属性未得到满足。但是,一旦我选择一个有效的选项,然后再次选择占位符(---),验证就会告诉我输入是有效的。当然是这样,因为---一个字符串,但是我不希望它有效。

如何将该选项作为无效选项包括在内?

解决方法

花些时间,但是在选项中添加了一个简单的value=""

<option value="">---</option>

解决了问题,因为绑定到InputSelect的值现在仅包含一个空字符串,而不包含字符串“ ---”。