Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Blazor validation works only when single field is present

$
0
0

I'm struggling with this since a week at least. So the thing is I have a little sandbox to play with blazor. There is a form with a few fields. Basic.I'm trying to put some validation on that. The input fileds are custom component, applied some bootstrap on them.In short, this is the input component:

@using System.Linq.Expressions<div class="input-group mb-3"><span class="input-group-text" id=@Id>@Label</span><InputText @bind-Value=@Value @oninput=OnInput type="text" class="form-control" placeholder=@PlaceHolder aria-label=@Label aria-describedby=@Id /><ValidationMessage For=@For /></div>@code {    [Parameter]    public string Id { get; set; }    [Parameter]    public string Label { get; set; }    [Parameter]    public string PlaceHolder { get; set; }    [Parameter]    public string Value     {         get => _value;         set        {            if (_value != value)            {                _value = value;                ValueChanged.InvokeAsync(value);            }        }    }    private string _value;    [Parameter]    public EventCallback<string> ValueChanged { get; set; }    [Parameter]    public Expression<Func<string>> For { get; set; }    [Parameter]    public Func<string> OnFormChange { get; set; }    private async Task OnInput(ChangeEventArgs e)    {        Value = e?.Value.ToString();        await ValueChanged.InvokeAsync(Value);    }}

and a piece from the page:

...<div class="container-sm"><Web.Components.Modal Id="exampleModal" Title="Fegyver bevezetése" OnSave="HandleSave" TriggerValidation="Validate" IsValid=@ModalIsValid><EditForm Model=@weaponUnderEdit OnValidSubmit="HandleValidSubmit" OnInvalidSubmit="HandleInvalidSubmit"><DataAnnotationsValidator />        ...            @* <Web.Components.TextInput Id="weight" Label="Súly" PlaceHolder="Súly pl.: 0.3 (Tőr), 2.5 (Csatacsákány)" @bind-Value=@weaponUnderEdit.Weight For="@(() => @weaponUnderEdit.Weight)" /> *@<Web.Components.TextInput Id="price" Label="Ár" PlaceHolder="Ár pl.: 1a 2e 3r, 1e 50r" @bind-Value=@weaponUnderEdit.Price For="@(() => @weaponUnderEdit.Price)" /><ValidationSummary /></EditForm></Web.Components.Modal></div>...

of course, there are data annotation attributes on the model:

public class CommonWeaponPrototype{...    [Required, RegularExpression(@"^\d+(\.\d{1,2})?$")]    public string Weight { get; set; }    [Required, RegularExpression(@"^\d+(\.\d{1,2})?$")]    public string Price { get; set; }}

Now the validation works like that:appeverything there...and if the second input is uncomment... everthing gone; no more validation.

Please help me out, I tried so many ways, feels so dumb with that task...

So far tried to use custom validation, maybe I can do with that, using Regex check and so on... but it is really annoying at this time that I can't make this work, and also, why custom? it is a really simple form to validate, some regex will it be.


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>