Несколько кнопок отправки в Blazor EditForm? - PullRequest
0 голосов
/ 04 октября 2019

Использование AspNet Blazor и его EditForm: я создаю простую форму, которая должна содержать как обновление, так и кнопку удаления. Кажется, я не нашел примеров того, как передать параметры для отправки.

Я попытался поместить @onclick в кнопку удаления, указывающую на DeleteObject, но тогда я не получил проверки (на самом деле я нев этом случае требуется проверка, но я все равно хочу это сделать, плюс то, что SaveObject также вызывался после удаления ...

<EditForm Model="@selectedCar" OnValidSubmit="@SaveObject">
    <DataAnnotationsValidator />
    <ValidationSummary />

    ....My <InputText>'s for all values I have in my object

    <button type="submit" class="btn btn-primary" value="Save">Spara</button>
    <button type="submit" class="btn btn-primary" value="Delete">Delete</button>
</EditForm>


@code {
    [Parameter]
    public string Id { get; set; }

    CarModel selectedCar;

    protected override async Task OnInitializedAsync()
    {
        selectedCar = await _CarService.GetCar(int.Parse(Id));
    }

    protected async Task SaveObject()
    {
        selectedCar.Id = await _CarService.SaveCar(selectedCar);
    }

    protected async Task DeleteObject(int Id)
    {
        selectedCar.Id = await _CarService.DeleteCar(selectedCar);
    }
}

Я хочу иметь возможность вызывать определенные функции для каждой кнопки,без обхода проверки.

У кого-нибудь есть хорошая идея, как это сделать?

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

Хорошо, я остановился на следующем решении. Кажется, работает как ожидалось.

<EditForm Model="@selectedCar" Context="formContext">

    <DataAnnotationsValidator />
    <ValidationSummary />

    ....My <InputText>'s for all values I have in my object

    <button type="submit" class="btn btn-primary" @onclick="@(() => SaveCar(formContext))">Save</button>
    <button type="submit" class="btn btn-primary" @onclick="@(() => UpdateStockQuantity(formContext))">Update stock quantity</button>
    <button type="submit" class="btn btn-secondary" @onclick="@(() => DeleteCar(formContext))">Delete</button>
</EditForm>

@code {
    [Parameter]
    public string Id { get; set; }

    CarModel selectedCar;

    protected override async Task OnInitializedAsync()
    {
        selectedCar = await _CarService.GetCar(int.Parse(Id));
    }

    protected async Task SaveCar(EditContext formContext)
    {
        bool formIsValid = formContext.Validate();
        if (formIsValid == false)
            return;

        selectedCar.Id = await _CarService.SaveCar(selectedCar);
    }

    ... plus same approach with UpdateStockQuantity and DeleteCar.

}   
0 голосов
/ 04 октября 2019

Если вы используете type="button", то вызывается только метод @onclick, а не метод OnValidSubmit. Но в этом случае нет проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...