Простое событие onchange сервера Blazor не компилируется

Aug 30 2020

Итак, я хочу сделать простое и понятное событие onchange. Когда пользователь изменяет параметр в раскрывающемся списке, который не является частью какой-либо формы, я хочу, чтобы он изменил мой класс Store (который является заменой того, что вы сделали бы с React-Context).

Итак, у меня есть мой компонент:

<select @onchange="OnRestaurantChanged">
    @foreach (var restaurant in _restaurantStore.State.RestaurantList)
    {
        <option value="@restaurant.Id">@restaurant.Name</option>
    }
</select >

и мой отдельный файл кода компонента здесь:

using MenuApp.Stores.Restaurant;

namespace MenuApp.Pages.Components.Restaurants
{
    public partial class RestaurantSelector : ComponentBase
    {
        [Inject]
        private IRestaurantStore _restaurantStore { get; set; }

        public string RestaurantId { get; set; }

        private void OnRestaurantChanged(ChangeEventArgs event)
        {
            _restaurantStore.ChangeSelectedRestaurant();
        }
    }
}

Но что бы я ни делал, я получаю следующие ошибки компилятора, несмотря на то, что каждый учебник или пример работает без этих ошибок.

Если я удалю параметр события из функции, все будет скомпилировано. Но мне нужен идентификатор ресторана, на который меняет приложение, поэтому запускать слепую функцию при изменении для меня бессмысленно.

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

Как я могу получить доступ к ChangeEventArgs?

Ответы

3 HenkHolterman Aug 30 2020 at 04:23
// private void OnRestaurantChanged(ChangeEventArgs event)
   private void OnRestaurantChanged(ChangeEventArgs @event)

eventзарезервированное слово. Вы можете «избежать» этого с помощью файла @. Общие правила C #, ничего общего с Razor.