微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Blazor 中创建一个好的自定义 DropDownList / ComboBox 项目?

如何解决如何在 Blazor 中创建一个好的自定义 DropDownList / ComboBox 项目?

我想在我的 Blazor-Server-App 上使用多个 ComboBox-Styled-Items。我的工作代码如下所示:

@page "/dropdownlist"
<h3>DropDownList - ComboBox</h3>

<select class="form-control col-6" @onchange="@(x => OnSelChange(x.Value.ToString()))">
    <option value="">--SelectName--</option>
    @foreach (var test in TestModelsLst)
    {
        <option value=@test.Id>@test.Name</option>
    }
</select>

@if (SelectedTestModel != null)
{
    <p>Sel TestModel-Obj.Name: @SelectedTestModel.Name</p>
}

@code {
    public TestModel SelectedTestModel;

    public void OnSelChange(string guidAsstring)
    {
        SelectedTestModel = TestModelsLst.FirstOrDefault(x => x.Id.ToString() == guidAsstring);
    }

    //---------------

    public List<TestModel> TestModelsLst = new List<TestModel>
    {
        new TestModel("Jonny"),new TestModel("Sarah"),new TestModel("Tom")
    };

    public class TestModel
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public TestModel(string name)
        {
            Id = Guid.NewGuid();
            Name = name;
        }
    }
}

问题:

1. 有没有办法通过 Class-Obj.而不是传递 Guid->string->SearchinLst -> 选择 Obj。 例如:<option value=@test> @test.Name </option>(没有 valueStuff)

2. 如果我的代码没问题。困扰我的一件事是,我无法像在 EditForms 中那样使用占位符 =“--SelectName--”。在我的解决方案中,用户现在可以选择选项 --SelectName--。

谢谢

解决方法

  1. 有没有办法通过 Class-Obj。而不是传递 Guid->string->SearchinLst -> 选择 Obj。例如。: @test.Name(没有 valueStuff)

没有。 option 元素的 value 属性不能是对象。

  1. 如果我的代码没问题。困扰我的一件事是,我无法像在 EditForms 中那样使用占位符 =“--SelectName--”。 在我的解决方案中,用户现在可以选择选项 --SelectName--。

如果我理解正确,以下可能会解决它(请参阅 --SelectName-- 选项的属性)...

<select class="form-control col-6" @onchange="@(x => OnSelChange(x.Value.ToString()))">
    <option value="" disabled selected hidden>--SelectName--</option>
    @foreach (var test in TestModelsLst)
    {
        <option value=@test.Id>@test.Name</option>
    }
</select>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。