Blazor:如何在bind:set和bind:after中传递自定义参数?
.NET 7 Blazor绑定语法:给bind:after/bind:set传递额外参数
当然可以给bind:after或bind:set传递额外参数,核心是利用闭包捕获上下文里的ServiceId,或者在bind:set的自定义逻辑里直接传入参数,两种方式都能满足你定位待更新实体的需求,具体实现如下:
方式一:使用bind:set自定义赋值逻辑
bind:set允许你完全控制绑定变量的赋值过程,同时可以在逻辑里直接调用带额外参数的方法,完美替代原来的@onchange写法:
原来的代码:
<InputText @onchange="@(code => OnCodeChanged(code, r.ServiceId))" />
替换为bind:set的写法:
<InputText @bind-Value="Code" @bind-Value:set="(newValue) => { // 先完成绑定变量的赋值 Code = newValue; // 调用带ServiceId的方法 OnCodeChanged(newValue, r.ServiceId); }" />
方式二:使用bind:after结合闭包
bind:after是在绑定变量更新完成后触发的回调,虽然它本身是无参委托,但可以通过闭包捕获当前上下文的r.ServiceId,写法如下:
<InputText @bind-Value="Code" @bind-Value:after="() => OnCodeChanged(Code, r.ServiceId)" />
这里bind:after触发时,Code已经完成更新,直接使用最新值即可,同时传入捕获到的r.ServiceId,同样能实现准确定位实体的需求。
两种方式各有适用场景:bind:set适合需要自定义赋值逻辑(比如参数校验、格式转换)的场景;bind:after则更侧重绑定完成后的后续操作,你可以根据实际需求选择。
内容的提问来源于stack exchange,提问作者Milan
相关产品推荐
相关产品推荐

