首页 > 其他分享 >Blazor学习之旅(2)第一个Blazor应用

Blazor学习之旅(2)第一个Blazor应用

时间:2023-07-06 18:47:43浏览次数:66  
标签:currentCount razor 第一个 之旅 Counter 应用 组件 Blazor

本篇我们来构建第一个Blazor Web应用,这里我们选择Blazor Server类型,后面我们再学习Blazor WebAssembly类型。

话外音:有人问我西门子在用Blazor吗?是的,西门子德国的两家数字化工厂都有在用Blazor开发Web应用,特别用到了MudBlazor这个UI组件库并封装一个完整的内部系统开发模板,值得关注!而作为西门子在中国的首家数字化工厂,成都工厂自然也用Blazor开发新的Web应用系统啦!

创建新的Blazor应用

在VS中,添加一个Blazor Server应用。

在“框架”组合框中选择“.NET 6.0(长期支持)”。保持其他设置不变,然后选择“创建”即可。

Blazor应用的结构

一个默认的Blazor应用的项目结构如下图所示:

其中:

(1)Data文件夹主要存放Model和Service。

(2)Pages文件夹主要存放基于Razor的页面和组件。其中,.cshtml是页面,.razor的则一般是组件,可复用。

(3)Shared文件夹主要存放页面模板、导航模板等。

其他:

(1)Imports.razor用于声明全局应用的命名空间。

(2)App.razor用于声明默认的Router。

Blazor应用初体验

这里,我们暂时啥也不改,Run起来看看效果:

(1)首先是一段文字介绍:

(2)点击Counter菜单,进入计数器页面:

(3)点击Fetch data菜单,进入天气预报示例数据表格:

计数器示例

在Pages/Counter.razor我们可以看到这个Counter组件的实现:

@page "/counter"

<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++;
    }
}

我们来看看这个组件的代码:

(1)@page指令说明了浏览器可以通过/counter请求来访问该组件;

(2)@code指令说明了C#代码区域,声明了一个InCrementCount方法用于点击次数的自增。

(3)button标签中通过@onclick绑定了点击事件InCrementCOunt,会触发currentCount的自增。

使用组件

这里我们尝试在Index.razor文件中添加一个刚刚的Counter组件:

@page "/"

<h1>Hello, world!</h1>

Welcome to your new app.

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

<Counter />

这时,我们重新启动应用就可以看到Counter组件显示在主页上面了:

此时,假设我们每个Counter组件的调用方希望的递增值是不固定的,不一定都是1。换句话说,我们希望支持调用方传递它需要递增的值,比如10。

这里,我们稍微改动一下Counter组件的实现:

@page "/counter"

<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]
    public int IncrementAmount { get; set; } = 1;

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

这里的改动为:

  • 使用 [Parameter] 特性为 IncrementAmount 添加公共属性。

  • 更改 IncrementCount 方法以在 currentCount 的值递增时使用 IncrementAmount。

当我们再次运行,在主页点击后,就会以10递增。

而在Counter组件页,它还是以1递增。

小结

本篇,我们创建第一个Blazor应用。

下一篇,我们来写一个Todo应用,把分层结构和EF Core串起来!

参考资料

Microsoft Learning,《使用Blazor生成Web应用

 

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

标签:currentCount,razor,第一个,之旅,Counter,应用,组件,Blazor
From: https://www.cnblogs.com/edisonchou/p/edc_aspnet_blazor_learning_chap2.html

相关文章

  • 安语未,开启你的互联网之旅!
    在当今互联网时代,我们无法想象没有互联网所带来的便利。网民们每天都在互联网上浏览新闻、购物、社交、娱乐等,而博客、影视等也成为了我们生活的一部分。为了更好地提供用户体验,让你的互联网之旅更加便捷愉快,我将为你介绍一些关于博客、互联网、影视和上网导航的知识。首先,让我们......
  • Blazor学习之旅(1)初步了解Blazor
    2022年9月以来在学习Blazor做全栈开发,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。作为第一篇,我们先来了解一下这个Blazor到底是个什么鬼。什么是Blazor?Blazor是微软近年来主推的,基于C#、HTML与CSS来构建交互式WebUI的框架。 借助Blaz......
  • Github | 制作您的第一个开源合并请求
    Github|制作您的第一个开源合并请求文章目录Github|制作您的第一个开源合并请求1.背景2.前提3.上手贡献开源1.背景开源软件是原始源代码可免费获得并可重新分发和修改的软件。作为一名程序员,我们更感兴趣的是如何为他们的代码库做出贡献。许多新手发现开源是可怕和令人生......
  • MAUI Blazor Android 输入框软键盘遮挡问题2.0
    前言关于MAUIBlazorAndroid输入框软键盘遮挡问题,之前的文章已经有了答案,MAUIBlazorAndroid输入框软键盘遮挡问题但是这个方案一直存在一点小的瑕疵在小窗模式下,界面的高度始终不正确所以本篇文章重点解决这个问题特别感谢这篇文章AndroidwebView输入框软键盘遮挡问题......
  • 微软推出全球第一个生成式AI认证
    7月1日,微软在官网宣布一项新的人工智能计划,包括与LinkedIn联合推出免费的生成式AI课程和专业认证证书;微软与数据平台data.org、开源社区GitHub等合作,发一起全球生成式AI挑战赛,为参赛的组织提供资金、技术、培训等帮助。用户学习完所有生成式AI课程后可以进行在线考试,获得全球第......
  • PB从入坑到放弃(一)第一个HelloWorld程序
    前言网上关于PowerBuilder的资料确实是少之又少。为了方便,后面我们都用pb来代替PowerBuilder说到这不得不来说说自己的pb入坑经历,自己也不是计算机科班出生。刚到公司面试,听到pb也是一脸懵逼,这啥东西,从来没听过。然而,不知不觉已经干了好几年......
  • 力扣之旅-0级小白到1级小白
    0到1是一个巨大的进步!海明威说过:“优于别人并不高贵,真正的高贵是优于过去的自己“目录:引言开始的挫折与挑战寻找解题思路和技巧持之以恒与刻意练习克服困难和失败的心态高效学习和准备复习寻求帮助和合作成功的喜悦与未来计划1、引言力扣是一个在线编程挑战平台,提供了广泛的算法和......
  • MAUI Blazor获取内存使用情况
    varrunTime=Java.Lang.Runtime.GetRuntime();varmaxMemory=runTime.MaxMemory();vartotalMemory=runTime.TotalMemory();varfreeMemory=runTime.FreeMemory();//获取可用内存ActivityManager.MemoryIn......
  • MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端
    前言前面的章节我们介绍了一些值得推荐的BlazorUI组件库,通过该篇文章的组件库介绍最终我选用AntDesignBlazor这个UI框架作为ToDoList系统的前端框架。因为在之前的工作中有使用过AntDesignVue、AntDesignAngular习惯并且喜欢AntDesign设计规范和风格,废话不多说今天我......
  • 庆军之blazor动态组件的研究与总结
    只上代码:rootcontrol.ControlParams=newDictionary<string,object>();rootcontrol.ControlParams["a"]="ssss";rootcontrol.Children.Add(newMControlParam(){ControlType=typeof(Layout),......