Blazor Server简单的onchange事件无法编译

问题描述

所以我想做一个简单的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();
        }
    }
}

但是无论我做什么,我都会遇到以下编译器错误,尽管事实上每个教程或示例似乎都可以正常工作而没有这些错误

Compiler errors

如果我从函数删除事件参数,则所有内容似乎都可以编译。但是我需要应用程序要更改到的餐厅的ID,所以对更改运行盲目功能对我来说毫无意义。

我当时想绑定到一个变量,然后使用onChange将绑定的变量发送到我的存储函数,但是我认为双重绑定不仅不必要,而且可能导致其他问题。

如何访问ChangeEventArgs?

解决方法

// private void OnRestaurantChanged(ChangeEventArgs event)
   private void OnRestaurantChanged(ChangeEventArgs @event)

event是保留字。您可以使用@“转义”它。一般的C#规则与Razor无关。