使用FluentSelect时如何绑定值?代码绑定失败求排查
问题排查与解决方案
核心问题分析
你的代码存在两个关键问题导致绑定失效:
- 绑定目标应为属性而非字段:Blazor的双向绑定(
@bind-Value)要求绑定目标是带get/set的属性,而非普通字段。你定义的int intValue;是字段,无法触发绑定更新。 - EditForm未正确绑定模型对象:EditForm需要绑定一个包含绑定属性的模型实例,而非零散字段,否则表单系统无法跟踪值的变化。
修正后的代码
后端代码(模型与逻辑)
// 定义表单模型类 public class FormModel { public int IntValue { get; set; } } // 组件类中实例化模型 private FormModel _model = new FormModel(); protected async Task HandleValidSubmit() { var i = _model.IntValue; // 从模型中获取绑定值 }
前端代码(FluentSelect与EditForm)
<EditForm Model="@_model" OnValidSubmit="HandleValidSubmit"> ... <FluentSelect @bind-Value="@_model.IntValue" TOption="int"> <FluentOption Value="1">Option 1</FluentOption> <FluentOption Value="2">Option 2</FluentOption> </FluentSelect> ... <button type="submit">提交</button> </EditForm>
额外说明
你提到参考《How to two-way-bind a value in FluentListBox》无法解决问题,这是因为该文章针对的是FluentListBox控件,而该控件确实无法直接与Forms系统配合使用,FluentSelect的绑定逻辑需要遵循Blazor表单的标准规则。
内容的提问来源于stack exchange,提问作者Matt Fitzmaurice
相关产品推荐
相关产品推荐

