Blazor的AuthorizeRouteView组件中context属性是在哪里定义的?
context变量的来源说明
这个变量是Blazor泛型渲染片段RenderFragment<T>的默认隐式参数,不需要你手动声明定义,是AuthorizeRouteView组件渲染对应片段时自动传入的:
AuthorizeRouteView的NotAuthorized属性本身就是类型为RenderFragment<AuthenticationState>的组件参数,泛型约束的类型就是AuthenticationState- Blazor框架约定,使用泛型
RenderFragment<T>时如果没有手动指定参数名,默认的参数变量名就是context,可以直接在片段内部调用
如果不习惯用默认名,你也可以手动指定参数名,写法如下:
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)"> <!-- 手动指定参数名为authState --> <NotAuthorized Context="authState"> @if (!authState.User.Identity!.IsAuthenticated) { @*<RedirectToLogin />*@ } else { <p>You are not authorized to access this resource.</p> } </NotAuthorized> </AuthorizeRouteView>
底层的执行逻辑很简单:当路由授权校验判定为未授权状态时,AuthorizeRouteView内部会先获取到当前请求的AuthenticationState实例,渲染NotAuthorized片段时会把这个实例作为参数传递给你写的片段内容,你通过context或者自定义的参数名就能直接读取到对应的值。
内容的提问来源于stack exchange,提问作者tp__tp
相关产品推荐
相关产品推荐

