You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新建.NET Blazor Web App中Select/InputSelect绑定失效问题排查

问题原因及解决方案

你的代码里OnSetChanged方法根本没和下拉框的变更事件绑定,所以断点永远不会触发。下面是针对两个下拉框的修复方案:

1. 原生<select>标签的修复

把原来的@bind="SelectedSet"拆分为@bind-value="SelectedSet"和@onchange="OnSetChanged",这样选择值变化时会触发你的自定义方法:

<select @bind-value="SelectedSet" @onchange="OnSetChanged" class="form-select">
    <option disabled selected value="">-- Select a Set --</option>
    @foreach (var set in Sets)
    {
        <option value="@set">@set</option>
    }
</select>
<p>You selected: @SelectedSet</p>

如果想在绑定完成后执行逻辑,也可以用@bind:after语法(.NET 7+支持):

<select @bind="SelectedSet" @bind:after="OnSetChanged" class="form-select">
    <!-- 选项内容不变 -->
</select>

2. InputSelect组件的修复

InputSelect是Blazor的表单组件,你可以通过OnChange参数绑定事件,或者用@bind-Value:after:

方式一:绑定OnChange事件

<InputSelect id="SetType" @bind-Value="CollectionSet" OnChange="OnSetChanged" class="form-select">
    @foreach (var set in Sets)
    {
        <option value="@set">@set</option>
    }
</InputSelect>

方式二:使用@bind-Value:after

<InputSelect id="SetType" @bind-Value="CollectionSet" @bind-Value:after="OnSetChanged" class="form-select">
    <!-- 选项内容不变 -->
</InputSelect>

额外说明

  • 如果你用@onchange或OnChange,方法参数可以保留ChangeEventArgs e,也可以改成无参方法(根据你的需求)。
  • 确保你的组件确实是InteractiveServer渲染模式,检查页面顶部的@rendermode InteractiveServer是否正确生效(比如页面加载时看浏览器控制台有没有Blazor的连接日志)。

内容的提问来源于stack exchange,提问作者Sas Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:02:49