Blazor:子 Editform 上的嵌套 Editform 验证

问题描述 投票:0回答:1
c# asp.net-core validation blazor editform
1个回答
0
投票

我们可以在外部表单中使用

OnSubmit
,并在外部表单和内部表单上手动进行验证。

<EditForm Model=@newPerson Context="PersonForm" OnSubmit="@FormSubmitted">
    <DataAnnotationsValidator />
    <ValidationSummary />
    <div class="form-row">
        <h4>Staff Information</h4>
    </div>
    <div class="form-row">
        <div class="form-group col-md-2">
            <label for="ResourceId">Person Id</label>
            <InputText @bind-Value=newPerson.ResourceId class="form-control" id="ResourceId" />
        </div>
        <div class="form-group col-md-2">
            <label for="Title">Title</label>
            <InputText @bind-Value=newPerson.Title class="form-control" id="Title" />
        </div>
    </div>
    <EditForm  EditContext="@EC" OnValidSubmit="@AddPosition">
        <DataAnnotationsValidator />
        <ValidationSummary />
        <div class="form-row">
            <h4>Position</h4>
        </div>
        <div class="form-row">
            <div class="form-group col-md-2">
                <label for="newPositionId">Position Id</label>
                <InputText @bind-Value=newPos.PositionId class="form-control" id="newPositionId" />
            </div>
            <div class="form-group col-md-2">
                <label for="newPositionName">Position Name</label>
                <InputText @bind-Value=newPos.PositionName class="form-control" id="newPositionName" />
            </div>
        </div>
        <input type="submit" class="btn btn-primary" value="Add Additional Position" />
    </EditForm>
    <br />
    <input type="submit" class="btn btn-primary form-group mr-1" value="Save Person" />
    <hr />
</EditForm>

@code {
    private Person newPerson = new ();
    private Position newPos = new ();
    private EditContext EC { get; set; }
 


    protected override async Task OnInitializedAsync()
    {
        EC = new EditContext(newPos);
    }

    void AddPosition(EditContext editContext)
    {
        bool formIsValid = editContext.Validate();
        if (formIsValid == true)
        {
            newPerson.Positions.Add(newPos);
            newPos = new Position();
        }
    }

    void FormSubmitted(EditContext editContext)
    {
        bool personFormIsValid = editContext.Validate();
        bool formIsValid = EC.Validate();
        if (formIsValid == true)
        {
            OnInitializedAsync();
        }
    }
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.