728x90

Validation 을 EditContext 를 이용해 원할때 Validation 하도록 할수 있습니다.

OnValidSubmit
: 유효한 필드가 있는 양식이 제출될 때 실행할 이벤트 처리기를 할당하는 데 사용합니다.
OnInvalidSubmit
:  유효하지 않은 필드가 있는 양식이 제출될 때 실행할 이벤트 처리기를 할당하는 데 사용합니다.
OnSubmit
: 양식 필드의 유효성 검사 상태와 관계없이 실행할 이벤트 처리기를 할당하는 데 사용합니다.
  이벤트 처리기 메서드에서 EditContext.Validate을 호출하여 양식의 유효성을 검사합니다.
  Validate가 true를 반환하면 양식이 유효한 것입니다.

EditContextTest.razor

@page "/editcontexttest"
<h3>EditContext Test</h3>

@using Blazor.AppTest.Data

<EditForm EditContext="@editContext" OnSubmit="@Submit">
    <DataAnnotationsValidator />

    <div class="form-group row">
        <label for="Name" class="col-sm-2 col-form-label">
            Name
        </label>
        <div class="col-sm-10">
            <InputText id="Name" class="form-control" placeholder="Name"
                       @bind-Value="exampleModel.Name" />
            <ValidationMessage For="@(() => exampleModel.Name)" />
        </div>
    </div>

    <div class="form-group row">
        <label for="Age" class="col-sm-2 col-form-label">
            Age
        </label>
        <div class="col-sm-10">
            <InputNumber id="Age" class="form-control" placeholder="Age"
                         @bind-Value="exampleModel.Age" />
            <ValidationMessage For="@(() => exampleModel.Age)" />
        </div>
    </div>

    <div class="form-group row">
        <label for="gender" class="col-sm-2 col-form-label">
            Gender
        </label>
        <div class="col-sm-10">
            <InputSelect @bind-Value="exampleModel.Gender" class="form-control">
                @foreach (var gender in Enum.GetValues(typeof(Gender)))
                {
                    <option value="@gender">@gender</option>
                }
            </InputSelect>
        </div>
    </div>

    <br /><br />

    <button type="submit">Submit</button>
    <InputCheckbox @bind-Value="@isValidation"/> Validation
</EditForm>

@code {
    private ExampleModel exampleModel = new();
    private EditContext? editContext;
    private bool isValidation = false;

    protected override void OnInitialized()
    {
        editContext = new(exampleModel);

        base.OnInitialized();
    }

    private void Submit()
    {
        Console.WriteLine("Submit");
        var messageStore = new ValidationMessageStore(editContext);
        messageStore.Clear();
        if (isValidation)
        {
            Console.WriteLine("Valid : " + editContext.Validate());
        }
        else
        {

        }
    }
}

아래 그림을 보면 알수 있지만 Validtion 체크박스를 체크하지 않으면 유효성 체크를 하지 않고
체크하게되면 유효성 검사가체크되는 걸 확인 할수 있습니다.

 

[Source]
https://github.com/kei-soft/Blazor.AppTest/blob/master/Blazor.AppTest/Pages/EditContextTest.razor

 

GitHub - kei-soft/Blazor.AppTest

Contribute to kei-soft/Blazor.AppTest development by creating an account on GitHub.

github.com

 

728x90
Posted by kjun.kr
,