web-dev-qa-db-ja.com

Blazor editformの複数の送信ボタン?

AspNet Blazorとその編集フォームの使用:更新ボタンと削除ボタンの両方を含む単純な形式を作成しています。送信にパラメータを渡す方法の例を見つけていないようです。

DeleteObjectを指すDeleteボタンに@OnClickを配置しようとしましたが、検証はありませんでした(この場合は実際に検証は必要ありませんが、とにかくやりたいです)、さらに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);
    }
}
 _

検証を回避することなく、ボタンごとに特定の機能を呼び出すことができます。

誰もがこれをする方法を理解していますか?

11
Anders K

2つのボタンは検証でフォームを送信します。
[。]そしてそれからあなたはブール値をチェックしてあなたが望む論理を呼び出すことができます:

<EditForm Model="@Input" OnValidSubmit="@UpdateAsync">
    <DataAnnotationsValidator />
    <div class="row">
        <div class="form-group col-md-12">
            <label class="required"> Name</label>
            <InputText class="form-control" @bind-Value="Input.Name" />
            <span class="err"><ValidationMessage For="@(() => Input.Name)" /></span>
        </div>
    </div>
    <div class="text-center">
     <button type="submit" @onclick="@(()=> Input.IsNew = false)" class="btn">save 1</button>
     <button type="submit" @onclick="@(()=> Input.IsNew = true)" class="btn">save 2</button>
    </div>
</EditForm> 


@code{
async Task UpdateAsync()
    {

        if (Input.IsNew)
        {
//do somthing 
        }
        else
        {
//do another somthing 
        }
    }
}
 _
0
Mohamed Omera