tnblog
首页
视频
资源
登录

ASP.NET Core Blazor 基础

8144人阅读 2020/5/13 14:02 总访问:3665024 评论:1 收藏:0 手机
分类: .net后台框架

Blazor简介

ASP.NET Core Blazor 基础


项目实践


项目环境


.NET Core 3.1


Blazor


创建项目





前端@符号的变量

名称 意义
@page 路由的地址,如:@page "/counter"
@code 里面可以写Cshrap代码
@inject 注入服务
@using 引用命名空间
@implements 一般使用方式为@implements IDisposable, 如果组件实现 IDisposable,则在从 UI 中删除该组件时调用 Dispose 方法。 可随时进行处置,包括在组件初始化期间.

文件讲解

文件名称 文件的意义
_Imports.razor 用于引用命名空间,并对所有Page添加引用
MainLayout.razor 主要母版层
App.razor 路由


创建导航链接时,请使用 NavLink 组件代替 HTML 超链接元素 (<a>)。 NavLink 组件的行为方式类似于 <a> 元素,但它根据其 href 是否与当前 URL 匹配来切换 active CSS 类。 active 类可帮助用户了解所显示导航链接中的哪个页面是活动页面。

  1. <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
  2. <span class="oi oi-home" aria-hidden="true"></span> Home
  3. </NavLink>
NavLink 细节
Match
Match—>NavLinkMatch.All NavLink 在与当前整个 URL 匹配的情况下处于活动状态。
Match—>NavLinkMatch.Prefix NavLink 在与当前 URL 的任何前缀匹配的情况下处于活动状态。


创建Razor文件



Authors.razor
  1. @page "/authors"
  2. @inject NavigationManager NavigationManager
  3. <h3>Authors</h3>
  4. <hr />
  5. <a href="/authors/authordetail">Bob He</a>
  6. <br />
  7. <button class="btn btn-primary" @onclick="Navigate">Bob He</button>
  8. @code {
  9. void Navigate()
  10. {
  11. //可以通过 NavigateTo 方法命令注入的对象。该方法采用 URL 作为参数
  12. NavigationManager.NavigateTo("/authors/authordetail/22");
  13. }
  14. }

NavigationManager对象参数

成员 描述
Uri 获取当前绝对URI。
BaseUri 获取可在相对 URI 路径之前添加用于生成绝对 URI 的基 URI(带有尾部反斜杠)。 通常,BaseUri 对应于 wwwroot/index.html (Blazor WebAssembly) 或 Pages/_Host.cshtml (Blazor Server) 中文档的 <base> 元素上的 href 属性。
NavigateTo 导航到指定 URI。 如果 forceLoadtrue,则:
- 客户端路由会被绕过。
- 无论 URI 是否通常由客户端路由器处理,浏览器都必须从服务器加载新页面。
LocationChanged 导航位置更改时触发的事件。
ToAbsoluteUri 将相对 URI 转换为绝对 URI。
ToBaseRelativePath 给定基 URI(例如,之前由 BaseUri 返回的 URI),将绝对 URI 转换为相对于基 URI 前缀的 URI。


AuthorDetail.razor
  1. @page "/authors/authordetail/{authorId:int}"
  2. @page "/authors/authordetail"
  3. @page "/author"
  4. <h3>AuthorDetail</h3>
  5. <hr />
  6. <p>@AuthorId Bob He path "/authors/authordetail"</p>
  7. @code {
  8. [Parameter]
  9. public int AuthorId { get; set; }
  10. }


传参类型

约束 示例 匹配项示例
bool {active:bool} true,FALSE
datetime {dob:datetime} 2016-12-31,2016-12-31 7:32pm
decimal {price:decimal} 49.99,-1,000.01
double {weight:double} 1.234,-1,001.01e8
float {weight:float} 1.234,-1,001.01e8
guid {id:guid} CD2C1638-1638-72D5-1638-DEADBEEF1638,{CD2C1638-1638-72D5-1638-DEADBEEF1638}
int {id:int} 123456789,-123456789
long {ticks:long} 123456789,-123456789

运行结果

事件挂载

以下组件通过订阅 NavigationManager.LocationChanged 来处理位置改变事件。 在框架调用 Dispose 时,解除挂接 HandleLocationChanged 方法。 解除挂接该方法可允许组件进行垃圾回收。

  1. @implements IDisposable
  2. @page "/authors"
  3. @inject NavigationManager NavigationManager
  4. <h3>Authors</h3>
  5. <hr />
  6. <a href="/authors/authordetail">Bob He</a>
  7. <br />
  8. <button class="btn btn-primary" @onclick="Navigate">Bob He</button>
  9. @code {
  10. protected override void OnInitialized()
  11. {
  12. Console.WriteLine("Add HandleLocationChanged");
  13. NavigationManager.LocationChanged += HandleLocationChanged;
  14. }
  15. private void HandleLocationChanged(object sender, LocationChangedEventArgs e)
  16. {
  17. Console.WriteLine("HandleLocationChanged Sent");
  18. }
  19. public void Dispose()
  20. {
  21. Console.WriteLine("Remove HandleLocationChanged");
  22. NavigationManager.LocationChanged -= HandleLocationChanged;
  23. }
  24. void Navigate()
  25. {
  26. //跳转
  27. NavigationManager.NavigateTo("/authors/authordetail/22");
  28. }
  29. }

跳转到该页面时加载 HandleLocationChanged 事件,当我们点击按钮进行跳转的时候,执行顺序如下:

LocationChangedEventArgs 可提供以下有关该事件的信息:

属性 描述
Location 新位置的 URL。
IsNavigationIntercepted 如果为 true,则 Blazor 拦截了浏览器中的导航。 如果为 false,则 NavigationManager.NavigateTo 导致了导航发生。

查询字符串喝分析参数

可以从 NavigationManager 的 Uri 属性中获取请求的查询字符串,在使用 QueryHelpers.ParseQuery 分析查询字符串后获取值。

接下来我们修改 AuthorDetail.razor 页面

  1. @using Microsoft.AspNetCore.WebUtilities
  2. @using Swifter;
  3. @using Swifter.Json;
  4. @page "/authors/authordetail/{authorId:int}"
  5. @page "/authors/authordetail"
  6. @page "/author"
  7. @inject NavigationManager NavigationManager
  8. <h3>AuthorDetail</h3>
  9. <hr />
  10. <p>@AuthorId Bob He path "/authors/authordetail"</p>
  11. <p>关于参数: @queryValue</p>
  12. @code {
  13. [Parameter]
  14. public int AuthorId { get; set; }
  15. private string queryValue = "Not set";
  16. protected override void OnInitialized()
  17. {
  18. var query = new Uri(NavigationManager.Uri).Query;
  19. if (!string.IsNullOrEmpty(query))
  20. {
  21. queryValue = JsonFormatter.SerializeObject(QueryHelpers.ParseQuery(query));
  22. }
  23. }
  24. }

通过不同的访问试试看

更多请参考:https://docs.microsoft.com/zh-cn/aspnet/core/blazor/routing?view=aspnetcore-3.1


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Redis基础安装操作-windows版

一、下载 redis官方没有提供windows版本,需要从微软的git下载releases版二、安装,启动1.解压出来 启动服务 可能会双击会...

DIV+CSS网页布局常用的一些基础知识整理

一.文件命名规范全局样式:global.css;框架布局:layout.css;字体样式:font.css;链接样式:link.css;打印样式:print...

oracle编程基础

简单介绍一下oracle中if,else,case when,循环,异常处理等用法if,elsedeclareptypeint:=2; begin ifptype=1then dbms_out...

net core使用StackExchange.Redis基础读写

Nuget下载: Install-Package StackExchange.Redis -Version 2.0.519hash表相关 获取所有键值,与所有valuepublicvoidHashO...

学点PS基础操作

污点修复画笔工具去掉图片文字找到污点修复画笔工具,然后在想要去掉的地方涂抹就可以了,非常的简单图片裁剪工具裁剪图片大小

Java学习 - Java语言基础

Java语言基础1.Scanner的用法2.java的程序结构3.java的数据类型4.java的运算符和表达式5.程序流程控制6.数组一 Scanner的用...

解决:基础提供程序在 Open 上失败,EF无法生成实体问题

在学校图书馆的电脑上安装VS2013和SQL R2后,调试项目报错:基础提供程序在 Open 上失败怀疑是数据库的问题,然后删除数据...

MySQL数据库基础

1 数据库和表操作 2 数据操作 3 高级查询 4 mysql管理1 数据库和表操作 数据库 创建:create database 数据库名 [default ...

mysql基础

1.创建、修改和删除 表是数据库存储数据的基本单位、一个表包含若干个字段或记录、表的操作包括创建新表、修改表和删除表。...

c反射基础

反射可以实现从对象的外部来了解对象我们可以利用反射直接创建对象,即时这个对象的类型在编译时还不确定通过反射可以在运...

css基础选择器和字体相关样式

今天学习了css基础选择器感觉自己又成长了1、内部样式表&lt;head&gt; &lt;styletype=&quot;text/CSS&quot;&gt; 选择器{属...

python基础输入和输出

Python使用print()函数向打印程序输出,采用input()函数接收程序输入。print()函数的语法格式如下:print(value,...,sep=&#...

Bash 基础(一)

Bash 基础(一)[TOC] 变量 基本定义 AIDASI=3 echo $AIDASI 3修改 AIDASI=xxxxxx echo $AIDASI xxxxxx拼接 ...

ASP.net core 启动过程(基础

ASP.NET Core 启动过程[TOC] 环境准备 项目结构 项目环境 .netcore3.1 开始 启动流程 修改项目 ...

ASP.net core 依赖注入(基础)[学习笔记]

ASP.NET Core 依赖注入(基础)[学习笔记][TOC] 环境准备 项目结构 服务类 GenericService.cs public...

ASP.net core 作用域与对象释放行为 (基础)[学习笔记]

ASP.NET Core 作用域与对象释放行为 (基础)[学习笔记][TOC] 知识大纲 作用域 IServiceScope 实现IDisposable接...
这一世以无限游戏为使命!
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术