【问题标题】:Blazor Server simple onchange event does not compileBlazor Server 简单 onchange 事件无法编译
【发布时间】:2020-12-18 10:28:53
【问题描述】:

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

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

如果我从函数中删除事件参数,那么一切似乎都可以编译。但是我需要应用程序要更改的餐厅的 id,因此在更改时运行盲函数对我来说毫无意义。

我正在考虑绑定到一个变量,然后使用 onChange 将绑定的变量发送到我的 store 函数,但我认为双重绑定不仅没有必要,而且可能会导致其他问题。

如何访问 ChangeEventArgs?

【问题讨论】:

  • 不使用“事件”作为变量,是保留字,使用,例如e :private void OnRestaurantChanged(ChangeEventArgs e){console.WriteLine(e.Value)}
  • Javascript习惯,没用过关键字。谢谢。

标签: blazor blazor-server-side asp.net-blazor


【解决方案1】:
// private void OnRestaurantChanged(ChangeEventArgs event)
   private void OnRestaurantChanged(ChangeEventArgs @event)

event 是保留字。您可以使用@ 来“逃避”它。通用 C# 规则,与 Razor 无关。

【讨论】:

  • Javascript 习惯。而且我之前没有使用过关键字。谢谢。
猜你喜欢
  • 2021-04-24
  • 2020-05-16
  • 2021-08-26
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
相关资源
最近更新 更多