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

如何在代码中获取blazer控件的引用并对控件进行修改?

Blazor 中获取控件/组件引用的实现方法

你提到的blazer应为Blazor框架,获取控件引用可通过官方提供的@ref指令实现,具体操作如下:

基础实现步骤

  • 在Razor文件的目标控件标签上添加@ref属性,绑定自定义的字段名
  • 在@code代码块中声明与控件类型匹配的同名字段,渲染完成后该字段会自动持有控件的引用

示例1:获取原生HTML元素引用

<!-- 页面标记部分 -->
<input @ref="inputElement" type="text" value="初始值" />
<button @onclick="FocusInput">聚焦输入框</button>

@code {
    // 原生HTML元素统一用ElementReference类型接收
    private ElementReference inputElement;
    // 注入JS运行时用于操作原生元素
    [Inject] private IJSRuntime JS { get; set; }

    private async Task FocusInput()
    {
        // 拿到引用后可通过JS互操作调整元素
        await JS.InvokeVoidAsync("eval", "arguments[0].focus()", inputElement);
    }
}

示例2:获取自定义/第三方Blazor组件引用

如果是自行封装的组件,或是MudBlazor、Ant Design Blazor这类第三方库的控件,直接用对应组件的类型作为字段类型即可:

<!-- 页面标记部分,以自定义的UserForm组件为例 -->
<UserForm @ref="formRef" DefaultUserId="1001" />
<button @onclick="ResetForm">重置表单</button>

@code {
    // 字段类型和目标组件类型完全一致
    private UserForm formRef;

    private void ResetForm()
    {
        // 直接调用组件公开的属性、方法修改控件状态
        formRef.Reset();
        formRef.Title = "编辑用户信息";
    }
}

关键注意事项

  • 引用仅在组件首次渲染完成后才会被赋值,在OnInitialized、OnParametersSet这类前置生命周期中访问会得到null,需要在OnAfterRender/OnAfterRenderAsync生命周期中才能获取有效引用
  • 自定义/第三方组件要访问的属性、方法必须声明为public,否则无法通过引用调用
  • 不要在渲染流程中修改引用对应的字段值,避免触发无限渲染循环

内容的提问来源于stack exchange,提问作者Joe K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:18:05