Blazor_WASM之4:路由

简介: Blazor_WASM之4:路由

Blazor_WASM之4:路由

路由模板

通过 Router组件可在 Blazor 应用中路由到 Razor 组件。 Router 组件在 Blazor 应用的 App 组件中使用。App组件模板如下

<RouterAppAssembly="@typeof(Program).Assembly">

   <FoundContext="routeData">

       <RouteViewRouteData="@routeData"DefaultLayout="@typeof(MainLayout)"/>

   </Found>

   <NotFound>

       <p>Sorry, there's nothing at this address.</p>

   </NotFound>

</Router>

在运行时,RouteView组件有两个作用:

  • 从 Router 接收 RouteData(例如/test)以及所有路由参数。
  • 使用指定的组件的布局来呈现该组件,包括任何后续嵌套布局。

组件支持使用多个 @page 指令,/blazor-route和/different-blazor-route都能跳转到该界面

@page "/blazor-route"

@page "/different-blazor-route"

<h1>Blazor routing</h1>

也可以将@page替换成@attribute

@page "/test"

@attribute [Route("test")]

重要:想要正确解析URL,必须在<head>中包含<base>,也就是在wwwroot中的index.html中<head>中包含<base>

<head>

   ...

   <basehref="/"/>

   ...

</head>

元素聚焦

切换到指定页面后,可以将UI焦点设置到指定元素。

<FocusOnNavigate RouteData="@routeData" Selector="h1" />

当 Router 组件导航到新页面时,FocusOnNavigate组件将焦点设置到页面的顶层标题 (<h1>)。

NotFound

如果找不到所请求路由的内容,则 Router组件允许应用指定自定义内容

<NotFound>

    <h1>Sorry</h1>

    <p>Sorry, there's nothing at this address.</p>

</NotFound>

路由参数

路由器使用相同的路由参数名称来填充组件参数,且路由参数不区分大小写。

@page "/test/{name}"

<h3>Test</h3>

<p>传入的参数是:@Name</p>

@code {

   [Parameter]

   public string? Name{ set;get; }

}

在地址栏中填写/test/哈哈哈

但是,如果地址栏只写/test,也就是不写参数,则会出现

改写为@page "/test/{name?}",name则变成可选参数,地址栏仍然只写/test,则会出现

路由约束

路由约束强制在路由段和组件之间进行类型匹配,例如只允许id为int类型

@page "/user/{Id:int}"

<h1>User Id: @Id</h1>

@code {

   [Parameter]

   public int Id { get; set; }

}

路由约束类型

路由约束也可以使用可选参数,比如下面的Id是必须,option是可选

@page "/user/{Id:int}/{Option:bool?}"

CatchAll路由参数

如果想把/test/a/b/c/test/后面的内容全部当做参数,则可以使用/test/{*par}来进行提取。

@page "/catch-all/{*pageRoute}"

@code {

   [Parameter]

   public string? PageRoute { get; set; }

}

查询字符串

查询字符串的样式如/test?name=tom&age=18后面的内容就是查询字符串,查询字符串支持的类型有bool, DateTime, decimal, double, float, Guid, int, long, string。使用方法如下:

@page "/test"

<h3>Test</h3>

<p>姓名:@Name</p>

<p>年龄:@Age</p>

<p>性别:@(MyProperty)</p>

@code {

   [Parameter]

   [SupplyParameterFromQuery]

   public string? Name{ set;get; }

   [Parameter]

   [SupplyParameterFromQuery]

   public int? Age { set; get; }

   [Parameter]

   [SupplyParameterFromQuery]

   public bool Gender { set; get; }

   public string MyProperty

   {

       get { return Gender?"男":"女"; }

   }  

}

在地址栏输入.../test?name=Tom&age=18&gender=true

SupplyParameterFromQuery的Name属性可以指定查询参数的名字,下面是一个将查询参数放到同一个数组的案例:

@page "/test"

<h3>Test</h3>

@foreach (var item in stars)

{

   <p>@item</p>

}

@code {

   [Parameter]

   [SupplyParameterFromQuery(Name ="star")]

   public string[]? stars { set; get; }

}

在地址栏输入.../test?star=a&star=b&star=c

相关文章
浦语·灵笔2:一款超强的图文多模态大模型,可直接生成图文并茂的完整文章!
浦语·灵笔2:一款超强的图文多模态大模型,可直接生成图文并茂的完整文章!
441 1
|
Ubuntu Linux Shell
使用Busybox制作根文件系统
使用Busybox制作根文件系统
235 0
|
iOS开发 Android开发 MacOS
从零到全能开发者:解锁Uno Platform,一键跨越多平台应用开发的神奇之旅,让你的代码飞遍Windows、iOS、Android、macOS及Web,技术小白也能秒变跨平台大神!
【8月更文挑战第31天】从零开始,踏上使用Uno Platform开发跨平台应用的旅程。只需编写一次代码,即可轻松部署到Windows、iOS、macOS、Android及Web(通过WASM)等多个平台。Uno Platform为.NET生态带来前所未有的灵活性和效率,简化跨平台开发。首先确保安装了Visual Studio或VS Code及.NET SDK,然后选择合适的项目模板创建新项目。项目结构类似传统.NET MAUI或WPF项目,包含核心NuGet包。通过简单的按钮示例,你可以快速上手并构建应用。Uno Platform让你的技术探索之旅充满无限可能。
524 0
|
9月前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
|
10月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
361 2
|
开发框架 前端开发 C#
从零开始学 Blazor 创建 Web 应用,入门指南超详细!带你轻松开启精彩的开发之旅!
【8月更文挑战第31天】在互联网时代,Web应用开发愈发重要,Blazor作为新兴框架,允许使用C#和.NET技术构建交互式Web应用,提高开发效率与代码可维护性。本文将从零开始引导读者了解Blazor的基本概念,安装设置步骤,项目创建及运行方法。通过简单的示例介绍Blazor的基本结构,包括Pages、Shared等文件夹用途,以及Program.cs文件的功能。同时,还将演示如何创建Razor页面和组件,实现数据绑定与事件处理,帮助读者快速入门Blazor开发。
1301 0
|
API 开发工具 Android开发
从安装到打包,手把手教你如何在Uno Platform上部署跨平台应用——一篇详尽的开发者指南
【9月更文挑战第7天】Uno Platform 是一个跨平台应用开发框架,利用UWP API构建Web、iOS、Android等多平台应用。本文详述了安装Uno Platform SDK、配置项目支持跨平台、添加主方法以及使用命令行工具进行应用打包的过程,助您快速上手 Uno Platform 并部署应用。通过简单的代码示例,让开发者轻松掌握从安装到发布的核心步骤。
873 2
|
监控 Linux 数据库连接
手把手教你从本地到云端:全面解析Blazor应用的部署流程与最佳实践,助你轻松掌握发布Blazor WebAssembly应用到Azure的每一个细节
【8月更文挑战第31天】本文详细介绍了将 Blazor 应用从本地部署到 Azure 的全过程。首先确保已在 Visual Studio 中创建 Blazor WebAssembly 应用,接着清理项目并配置发布选项。然后在 Azure 中创建 App Service 并完成应用部署。最后,配置环境变量、SSL 和监控,确保应用稳定运行。附带示例代码,展示如何加载和使用 Azure 环境变量。通过最佳实践指导,帮助你顺利完成 Blazor 应用的云端部署。
452 0
|
JavaScript 前端开发 C#
在winform blazor hybrid中绘图
在winform blazor hybrid中绘图
146 1
|
存储 人工智能 索引
Python中的嵌套字典访问与操作详解
Python中的嵌套字典访问与操作详解
403 1