Blazor: вызывать метод сервера при нажатии кнопки? - PullRequest
1 голос
/ 03 октября 2019

Я создал пример проекта Blazor. У лесов есть два примера: (1) вызов метода C #, существующего на веб-странице = counter, (2) вызов метода сервера в НАЧАЛЕ инициализации веб-страницы = таблицы погоды. Но это не пример вызова метода сервера и получения результата при нажатии кнопки. Возможно ли это?

Например, могу ли я добавить такой метод в «WeathrForecastService.cs»:

    public int Add(int a, int b)
    {
        return a + b;
    }

и, как в примере «counter», добавить кнопку настраницы, и когда кнопка нажата, отобразите ее результат:

@page "/fetchdata"

@using BlazorApp1.Data
@inject WeatherForecastService ForecastService

<h1>Weather forecast</h1>

<p>This component demonstrates fetching data from a service.</p>

@if (forecasts == null)
{
    <p><em>Loading...</em></p>
}
else
{
    <p>Current count: @[display the result of ForecastService.Add(1,2)]</p>
    <button class="btn btn-primary" @onclick="[call ForecastService.Add(1,2)]">Click me</button>
}

@code {
    WeatherForecast[] forecasts;

    protected override async Task OnInitializedAsync()
    {
        forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
    }
}

1 Ответ

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

вызов метода сервера и получение результата при нажатии кнопки. Это возможно?

Да. Если вы используете Blazor Server Side, метод на стороне сервера будет вызываться через SignalR под капотом.

Подобно тому, как мы это делаем в Angular / React, для отображения результата нам нужно создать поле _sum для кэширования результата, чтобы мы могли отобразить / изменить его позже:

@code {
    private int _sum;
}

И измените свой onclick, как показано ниже:

<p>Current count: @this._sum</p>
<button class="btn btn-primary" @onclick="()=>this._sum= ForecastService.Add(1, 2)" >Click me</button>
...