Blazor 怎么向组件传递参数

4次阅读

Blazor 中组件参数传递主要通过 [Parameter] 特性实现,要求属性为 public 且可 set;支持简单类型、RenderFragment 子内容和 EventCallback 事件回调,并可设默认值或可空类型。

Blazor 怎么向组件传递参数

Blazor 中向组件传递参数主要通过 组件参数(Component Parameters) 实现,本质是给组件的 public 属性打 [Parameter] 特性。这是最常用、最直接的方式。

使用 [Parameter] 传递简单类型参数

在子组件中定义带 [Parameter] 特性的 public 属性,父组件在引用时用属性语法传值:

  • 子组件(如 Counter.razor)中写:
    @code {
    [Parameter] public int StartCount {get; set;} = 0;
    [Parameter] public string Title {get; set;} = "计数器";
    }

  • 父组件中使用:
  • 注意:参数名区分大小写,且必须是 public、可 set 的属性;不加 [Parameter] 不会被识别为输入参数。

传递组件内容(Child Content)

[Parameter] public RenderFragment ChildContent {get; set;} 接收嵌套内容:

  • 子组件(如 Card.razor)中定义:
    [Parameter] public RenderFragment ChildContent {get; set;}
  • 模板中渲染:

    @ChildContent

  • 父组件调用:

    标题


    这里是卡片正文


传递事件回调(EventCallback)

让子组件“通知”父组件,用 EventCallback

  • 子组件中声明:
    [Parameter] public EventCallback OnClick {get; set;}
  • 触发时调用:
    await OnClick.InvokeAsync("按钮被点了");
  • 父组件绑定:

    并在 @code 块中定义:
    private void HandleClick(string msg) {……}

可选参数与默认值

参数可以设默认值(C# 属性默认值或构造函数初始化),不传也不会报错:

  • [Parameter] public bool IsEnabled {get; set;} = true;
  • 也可用 [Parameter] public string? Description {get; set;} 表示可为空,不传即为 null
  • 若需判断是否显式传入,可用 bool HasValue 配合 nullable 引用类型 + 初始化检查,但 Blazor 本身不提供“是否传了”的元信息,一般靠默认值语义区分。

基本上就这些。参数传递不复杂但容易忽略大小写和 public/set 要求,写完记得检查 编译错误 提示 —— 它通常会明确告诉你哪个属性没加 [Parameter] 或不可访问。

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-08发表,共计1139字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。