MatBlazor选择问题

MatBlazor选择问题,blazor,blazor-server-side,matblazor,Blazor,Blazor Server Side,Matblazor,我的代码应该是这样的,但它得到了空引用异常 <MatSelect Label="Atık Tipi" @bind-Value="@SecilenAtikGrubu.GrupId" Style="width:100%"> @foreach (var item in TumAtikTipleri) { <MatOption Value="@item.Id">@item.Deger1</MatOption> } &

我的代码应该是这样的,但它得到了空引用异常

 <MatSelect Label="Atık Tipi" @bind-Value="@SecilenAtikGrubu.GrupId" Style="width:100%">
      @foreach (var item in TumAtikTipleri)
     {
        <MatOption Value="@item.Id">@item.Deger1</MatOption>
     }
 </MatSelect>

坏消息是,我已经检查过了,MatSelect无法绑定到可空类型

好消息是,首先,您可以使用辅助属性作为解决方法


第二个好消息:MatBlazor是一个开源项目。如果您需要使用可为空的类型,请向您发送PR。例如,如果您无法改进组件,项目所有者可以接受贡献(例如),您可以付费让他人为您编写组件,或者您可以在项目问题上发布新功能的请求。这看起来是个好主意,绑定可为空的对象会很好。

@daniherrera您可以将
MatSelect
绑定到可为空的类型。但是,您必须使用
指定接受可为空的类型。例如:

<MatSelect Label="Pick a Food Group" @bind-Value="@guidValue">
    <MatOption TValue="Guid?" Value="@(null)"></MatOption>
    <MatOption TValue="Guid?" Value="@(new Guid("20A82054-F493-4C7B-81A4-4F9A1EDD7C2E"))">Bread, Cereal, Rice, and Pasta</MatOption>
    <MatOption TValue="Guid?" Value="@(new Guid("4451642D-24F7-418F-8741-BA5089A1CC65"))">Vegetables</MatOption>
    <MatOption TValue="Guid?" Value="@(new Guid("5717DBBE-C205-4E33-9E07-892A51F64021"))">Fruit</MatOption>
</MatSelect>

<span>@guidValue</span>

@code
{
    Guid? guidValue = new Guid("20A82054-F493-4C7B-81A4-4F9A1EDD7C2E");
}

面包、谷类、米饭和面食
蔬菜
果
@导向值
@代码
{
Guid?Guid值=新Guid(“20A82054-F493-4C7B-81A4-4F9A1EDD7C2E”);
}


使用
int?Id
并用
TValue=“int?”
标记您的
选项

您是否已确保所有
GrupID
均为空?我怀疑MatSelect不处理与null值的绑定是的,它在GrupId不为null时工作,但它应该与null值to一起工作。正如我所说,您不知道
MatSelect
组件在幕后使用该值做什么。它可能不希望出现空值。我建议在他们的《谢谢你》上开一期,我会的。看看MudBlazor。它有一个很好的选择:
 public class GrupKodlari : KayitBilgisi
{
    [Key]
    public int Id { get; set; }
    public string Tur { get; set; }
    public string Isim { get; set; }
    public string Deger1 { get; set; }
    public string Deger2 { get; set; }
    public string Deger3 { get; set; }
    public int? GrupId { get; set; } 
    public virtual GrupKodlari Grup { get; set; }

}
public int GrupIdAux
{
    set{
        GrupId = (value==0?(int?)null:value);
    }
    get {
        return (GrupId==null?0:GrupId.Value);
    }
}
<MatSelect Label="Pick a Food Group" @bind-Value="@guidValue">
    <MatOption TValue="Guid?" Value="@(null)"></MatOption>
    <MatOption TValue="Guid?" Value="@(new Guid("20A82054-F493-4C7B-81A4-4F9A1EDD7C2E"))">Bread, Cereal, Rice, and Pasta</MatOption>
    <MatOption TValue="Guid?" Value="@(new Guid("4451642D-24F7-418F-8741-BA5089A1CC65"))">Vegetables</MatOption>
    <MatOption TValue="Guid?" Value="@(new Guid("5717DBBE-C205-4E33-9E07-892A51F64021"))">Fruit</MatOption>
</MatSelect>

<span>@guidValue</span>

@code
{
    Guid? guidValue = new Guid("20A82054-F493-4C7B-81A4-4F9A1EDD7C2E");
}