六 计数器页面

14. 在浏览器中,通过鼠标左键单击左边菜单栏中的“Counter”菜单,页面进入到计数器页面。如下图。       

图2-17

15.在浏览器的计数器页面中,使用鼠标左键单击“Click me”按钮,页面中的“Current count:”从0,变为了1,在没有刷新页面的情况下增加了1。在以往的Web应用程序中,我们要实现不刷新页面实现计数器功能,通常是通过编写JavaScript来实现,但是在Blazor中可以使用C#来编写这个功能。

图2-18

16. 在Visual Studio 2022的解决方案资源管理器中,找到Pages\Counter.razor文件,使用鼠标双击在文本编辑器中打开此文件。代码如下。

@page "/counter"

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {

    private int currentCount = 0;

     private void IncrementCount()
{
currentCount++;
}
}

上面的代码中第一行是@page指令,这个指令在Blazor中是指定Razor组件直接处理请求的路由。浏览器的请求会通过这个@page指令设置的路由来处理请求。

<PageTitle> 设置页面的标题。

@code指令是在Razor组件中添加C#(字段、属性和方法)代码,实现相应功能。例如上面的Razor组件中用@currentCount表示当前计数的数量,@code代码块中定义了currentCount 这个整数数量作为计数用。“Click me”按钮的onclick事件触发之后调用IncrementCount方法,该方法也可在@code代码块中找到。

17. 实际上每一个.razor文件都是一个可以重用的Razor UI组件。在Visual Studio 2022的解决方案资源管理器中,Pages\Index.razor文件,使用鼠标双击此文件,在文本编辑器中打开。

18.在Index.razor文件的末尾添加<Counter/>元素,此元素表示将计数器组件添加到Index.razor页面。代码如下,注意红色粗体部分。

@page "/"

<PageTitle>Index</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
测试热重载功能 。
<Counter></Counter>
19.保存文件之后,我们回到浏览器中,使用鼠标左键单击左边菜单栏中的“Home”菜单,页面进入首页,页面上并没有显示“计数器”组件。我们不停的按F5刷新浏览器,同样无法看到“计数器”组件。如下图。

图2-19

20.在Visual Studio 2022的工具栏上,点击“热加载”按钮。然后回到浏览器中,我们发现“计数器”组件已经显示在页面中了。如下图中的红框所示。

图2-20

21.在浏览器的首页中,使用鼠标左键单击“Click me”按钮,页面中的“Current count:”从0,变为了1;再次点击“Click me”按钮,页面中的“Current count:”从1,变为了2。这个计数变化的过程中没有刷新页面。

图2-21

22. Razor组件参数可以使用属性或子内容来设定,方便设置Razor组件的参数。例如,我们要在“计数器”组件上定义一个参数,用于设置每次单击按钮时计数器组件增加值。通过以下二步来实现

第一,在@code代码块中添加一个公共属性IncrementAmount,并在这个属性上方添加[Parameter]特性。

第二,更改计数器的递增方法currentCount,在每次递增currentCount值时使用IncrementAmount。

具体代码如下所示:

@page "/counter" 

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {

    private int currentCount = 0;

    [Parameter]
publicint IncrementAmount { get; set; } = 1; privatevoid IncrementCount()
{
currentCount += IncrementAmount;
}

23. 在Visual Studio 2022的解决方案资源管理器中,找到Pages\Index.razor文件,使用鼠标双击此文件,在文本编辑器中打开。在Index.razor文件的<Counter/>元素处,添加IncrementAmount属性,并将该属性值更改5。代码如下,注意粗体部分。

@page "/"

<PageTitle>Index</PageTitle>

<h1>Hello, world!</h1>

Welcome to your new app.

<SurveyPrompt Title="How is Blazor working for you?" />

测试热重载功能 。

<CounterIncrementAmount="5"></Counter>

24.在Visual Studio 2022的工具栏上,点击“热加载”按钮。然后回到浏览器中,此时浏览器中正呈现的是刚才我们浏览的首页,使用鼠标左键单击“Click me”按钮,页面中的“Current count:”从2,变为了7,如下图所示;再次点击“Click me”按钮,页面中的“Current count:”从7,变为了12。

图2-22

25.在浏览器中,通过鼠标左键单击左边菜单栏中的“Counter”菜单,页面进入到计数器页面。在浏览器的计数器页面中,使用鼠标左键单击“Click me”按钮,页面中的“Current count:”从0,变为了1,而不是5。

            

学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(完)的更多相关文章

  1. 学习ASP.NET Core Razor 编程系列二——添加一个实体

    在Razor页面应用程序中添加一个实体 在本篇文章中,学习添加用于管理数据库中的书籍的实体类.通过实体框架(EF Core)使用这些类来处理数据库.EF Core是一个对象关系映射(ORM)框架,它简 ...

  2. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...

  3. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(下)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  4. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上)

    学习ASP.NET Core Blazor编程系列一--综述 一.概述 Blazor 是一个生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...

  5. 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  6. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

    C#中的函数式编程:递归与纯函数(二)   在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...

  8. 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  9. 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. 校验日期格式为yyyy-MM-dd

    /** * 校验时间 * * @param text * @return */ public static boolean checkTime(String text) { DateFormat fo ...

  2. Spring框架系列(11) - Spring AOP实现原理详解之Cglib代理实现

    我们在前文中已经介绍了SpringAOP的切面实现和创建动态代理的过程,那么动态代理是如何工作的呢?本文主要介绍Cglib动态代理的案例和SpringAOP实现的原理.@pdai Spring框架系列 ...

  3. 使用 NSProxy 实现消息转发

    一.简介 ​ 在 iOS 应用开发中,自定义一个类一般需要继承自 NSObject 类或者 NSObject 子类,但是,NSProxy 类不是继承自 NSObject 类或者 NSObject 子类 ...

  4. 关于使用netstat -lantup查看的SSHD 6010端口解释

    关于使用netstat -lantup查看的SSHD 6010端口解释: 1.使用netstat -lantup查看当前系统开启的服务端口 tcp6       0      0 ::1:6010   ...

  5. git的工作原理和git项目创建及克隆

    Git基本理论(重要)三个区域Git本地有三个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或Git Directory).如 ...

  6. protobuf 的交叉编译使用(C++)

    前言 为了提高通信效率,可以采用 protobuf 替代 XML 和 Json 数据交互格式,protobuf 相对来说数据量小,在进程间通信或者设备之间通信能够提高通信速率.下面介绍 protobu ...

  7. rust实战系列-base64编码

    前言 某些只能使用ASCII字符的场景,往往需要传输非ASCII字符的数据,这时就需要一种编码可以将数据转换成ASCII字符,而base64编码就是其中一种. 编码原理很简单,将原始数据以3字节(24 ...

  8. gerrit系统如何配置访问控制

    . 版本:v0.3 作者:河东西望 日期:2022-7-13 . 目录 1 关键概念 2 需求场景 3 配置策略 gerrit系统的上手使用有两个难点: 部署repo仓库. 配置访问控制. 想要上手使 ...

  9. 使用Win自带的远程工具连接Linux

    网上教程一大堆,我这边只简单记录一下,主要是黑屏问题,和剪贴板问题.Win连接Linux,一般都是使用的xrdp, 如果是使用的旧版本的Ubuntu,建议先装一下xfce桌面,gnome桌面一般连不起 ...

  10. CF1702B Polycarp Writes a Srting from Memory 题解

    给定一个字符串,每天可以记忆三个字符,求书写出整个字符串的天数. 每次确定要记忆的三个字母,并向后寻找,若有非三个字母其中一个,则重新开启一天记忆三个字母. #include<cstdio> ...