如何从Blazor页面为布局组件的参数提供值?
Blazor页面给布局组件传递参数的方法
首先要修改布局组件的代码,把TrademarkMessage标记为组件参数——只有标记了[Parameter]特性的属性,才能接收外部传递的值:
@inherits LayoutComponentBase @layout ProductionsLayout @Body <div> @TrademarkMessage </div> @code { // 添加[Parameter]特性,使其成为可接收外部值的参数 [Parameter] public string TrademarkMessage { get; set; } = "Doctor Who is a registered trademark of the BBC. " + "https://www.doctorwho.tv/"; }
完成布局的修改后,就可以从页面传递参数了,推荐两种实用方法:
方法一:用LayoutView组件指定布局并传参
直接在页面里用LayoutView包裹内容,同时通过LayoutParameters传递参数值:
@page "/" <LayoutView Layout="@typeof(YourLayoutComponent)"> <LayoutParameters> <Parameter Name="TrademarkMessage" Value="这里是自定义的商标信息内容" /> </LayoutParameters> <!-- 页面的具体内容 --> <h1>首页欢迎你</h1> <p>这是首页的正文内容</p> </LayoutView>
注:YourLayoutComponent要替换成你实际的布局组件类名(比如布局文件叫MainLayout.razor,类名就是MainLayout)。
方法二:用级联参数(适合多页面共享传递场景)
如果多个页面都需要给布局传这个参数,或者需要跨多层组件传递,用级联参数更方便:
- 修改布局组件,把
[Parameter]换成[CascadingParameter]:
@inherits LayoutComponentBase @layout ProductionsLayout @Body <div> @TrademarkMessage </div> @code { [CascadingParameter] public string TrademarkMessage { get; set; } = "Doctor Who is a registered trademark of the BBC. " + "https://www.doctorwho.tv/"; }
- 在页面里用
CascadingValue提供参数值:
@page "/" <!-- 用CascadingValue包裹页面内容,传递参数值 --> <CascadingValue Value="自定义的商标信息内容"> <h1>首页欢迎你</h1> <p>这是首页的正文内容</p> </CascadingValue>
内容的提问来源于stack exchange,提问作者acmoune
相关产品推荐
相关产品推荐

