Search code examples
validationdrop-down-menumudblazor

MudBlazor MudSelect validation


I have a simple MudBlazor MudSelect list

   <MudSelect T="int" Label="Choose Coverage Type" 
              AnchorOrigin="Origin.BottomCenter" Variant="Variant.Outlined"
              Margin="Margin.Dense" For="@(() => newLink.CoverageType)">
         <MudSelectItem Value="0">No Coverage Selected</MudSelectItem>
         <MudSelectItem Value="1">Auto</MudSelectItem>
         <MudSelectItem Value="2">Cyber</MudSelectItem>
         <MudSelectItem Value="3">D&O/EPL</MudSelectItem>
         <MudSelectItem Value="4">General Liability</MudSelectItem>
         <MudSelectItem Value="5">General Risk Management</MudSelectItem>
         <MudSelectItem Value="6">Property</MudSelectItem>
       </MudSelect>

In my class I have DataAnnotations for validation

        //[RegularExpression ("^[1-6]$", ErrorMessage="A Coverage Type is Required")]
        [Required]
        public int CoverageType { get; set; }

I can get validation working on simple textboxes, but I want a validation error if the first item in the dropdown is slected "No Coverage Selected"

Does anyone know how to do this with the MudBlazor control? I have not found anything on their website.

Thanks for any help


Solution

  • You can try validating the field using the MudForm component.

    Example:

    https://try.mudblazor.com/snippet/QYQcaMkIrMqCiOQf

    @using System.Text.RegularExpressions
    @using System.ComponentModel.DataAnnotations
    
    <MudForm @ref="form" class="my-3">
        <MudSelect
                T="int"
                Label="Choose Coverage Type" 
                AnchorOrigin="Origin.BottomCenter"
                Variant="Variant.Outlined"
                Margin="Margin.Dense"
                For="@(() => newLink.CoverageType)">
            <MudSelectItem Value="0">No Coverage Selected</MudSelectItem>
            <MudSelectItem Value="1">Auto</MudSelectItem>
            <MudSelectItem Value="2">Cyber</MudSelectItem>
            <MudSelectItem Value="3">D&O/EPL</MudSelectItem>
            <MudSelectItem Value="4">General Liability</MudSelectItem>
            <MudSelectItem Value="5">General Risk Management</MudSelectItem>
            <MudSelectItem Value="6">Property</MudSelectItem>
        </MudSelect>
    </MudForm>
    
    <MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="@(()=>form.Validate())">Validate</MudButton>
    <MudButton Variant="Variant.Filled" Color="Color.Error" OnClick="@(()=>form.Reset())">Reset</MudButton>
    <MudButton Variant="Variant.Filled" OnClick="@(()=>form.ResetValidation())">Reset Validation</MudButton>
    
    @code {
        private YourModel newLink = new YourModel();
        private MudForm form;
    
        class YourModel
        {
            [RegularExpression ("^[1-6]$", ErrorMessage="A Coverage Type is Required")]
            [Required]
            public int CoverageType { get; set; }    
        }
    }