【问题标题】:Add validation to InputSelect with default placeholder string使用默认占位符字符串向 InputSelect 添加验证
【发布时间】:2020-09-30 06:19:40
【问题描述】:

我正在使用这样的 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] 属性不满足。但是一旦我选择了一个有效的选项,并再次选择占位符 (---),验证就会告诉我,输入是有效的。当然是,因为--- 是一个字符串,但我不希望它有效。

如何将此选项列为无效选项?

【问题讨论】:

    标签: blazor webassembly blazor-client-side asp.net-blazor


    【解决方案1】:

    花了我一些时间,但一个简单的value="" 像这样添加到选项中:

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

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

    【讨论】:

    • 如果您将&lt;option value=""&gt;---&lt;/option&gt; 放在像这样的“optgroup”标签上,它看起来会更棒。 &lt;InputSelect class="form-control" @bind-Value="_associationToCreate.SportingCode"&gt; &lt;option value=""&gt;---&lt;/option&gt; &lt;optgroup label="Select sporting code"&gt; @foreach (var enumeration in Enumeration.GetAll&lt;SportingCode&gt;()) { &lt;option value="@enumeration"&gt;@enumeration&lt;/option&gt; } &lt;/optgroup&gt; &lt;/InputSelect&gt;
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多