Blazor / dotnet 5.0.0:在InputSelect中设置所选值

时间:2020-10-29 10:17:40

标签: .net blazor placeholder selected

我需要在下拉列表中将所选值设置为占位符。自从更新到mcr.microsoft.com/dotnet/sdk:5.0以来,它将不再起作用。输入字段为空,未选择任何值。在更新之前它正在工作。 设置所选属性也不起作用。

<InputSelect @bind-Value="someValue" 
            id="someValue" 
            required>
            <option value="">some Text</option>
            @foreach (var someValue in someValues)
                {
                    <option value="@someValue">@someValue</option>
                }
        </InputSelect>

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您提供的代码在rc2中可以正常工作。

注意:我对EditForm的用法进行了假设。

<EditForm EditContext="SomeContext">

    <InputSelect @bind-Value="someValue" id="someValue" required>
        <option value="">some Text</option>
        @foreach (var someValue in someValues)
        {
        <option value="@someValue">@someValue</option>
        }
    </InputSelect>

</EditForm>

@someValue

@code {
    IEnumerable<string> someValues = new List<string> { "Value1", "Value2", "Value3" };
    EditContext SomeContext { get; set; }
    string someValue;

    SomeModel someModel = new SomeModel();
    protected override void OnInitialized()
    {
        SomeContext = new EditContext(someModel);
    }

    class SomeModel { }
}

但是:到处都使用“ someValue”。我将需要查看更多代码来查找错误。如果将其粘贴到垃圾/测试项目索引页面的底部,则可以使用。 EditForm配置/绑定可能是问题所在。

答案 1 :(得分:0)

您需要检查模型中的someValue是否可以为空。在这里定义

<option value="">...

您的选项值为null或空字符串。如果使用字符串作为数据类型,那么一切都很好。但是,如果使用新添加的对System.Guid的支持之类的对象,则必须允许可为空的值。

例如:

public Guid? someValue { get; set; } = null;

如果您使用Guid.Empty也可以使用

<option value="@(System.Guid.Empty)">...

但这取决于您的要求。