MatBlazor 选择问题

lkm*_*lik 3 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>
Run Code Online (Sandbox Code Playgroud)

但是当我这样使用时,它正在工作

  <select class="mdc-select__native-control" @bind="SecilenAtikGrubu.GrupId">
     @foreach (var item in TumAtikTipleri)
     {
         <option value="@item.Id">@item.Deger1</option>
     }
  </select>
Run Code Online (Sandbox Code Playgroud)

绑定值类如下(SecilenAtikGrubuTumAtikTipleri

 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; }

}
Run Code Online (Sandbox Code Playgroud)

dan*_*era 6

坏消息是,我已经检查它,并MatSelect是不能被绑定到一个可空类型。

现在好消息是,第一个,您可以使用辅助属性作为解决方法,在 blazorfiddle 尝试一下

public int GrupIdAux
{
    set{
        GrupId = (value==0?(int?)null:value);
    }
    get {
        return (GrupId==null?0:GrupId.Value);
    }
}
Run Code Online (Sandbox Code Playgroud)

只是垫子选择的一个样本

第二个好消息:MatBlazor 是一个开源项目。如果您需要使用可空类型,您可以改进 MatSelect 控件并发送 PR。项目所有者对贡献开放态度(例如我写了 NumericUpDown)如果您无法改进组件,您可以花钱请人为您编写它,或者您可以在项目问题上发布对新功能的请求。看起来是个好主意,绑定可空对象会很棒。