《进击吧!Blazor!》系列入门教程 第一章 3.页面制作

本文介绍了如何使用Blazor WebAssembly框架构建一个待办事项应用,包括设置项目、引入AntDesignBlazor库、实现路由、布局、菜单、组件交互等功能。教程详细展示了从创建待办列表、添加、删除、完成任务,到动态显示和编辑任务等步骤,让开发者能够快速掌握Blazor应用开发。

《进击吧!Blazor!》是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力。
视频地址:https://space.bilibili.com/483888821/channel/detail?cid=151273
Blazor WebAssembly 是单页应用 (SPA) 框架,用于使用 .NET 生成交互式客户端 Web 应用,采用 C# 代替 JavaScript 来编写前端代码
本系列文章基于《进击吧!Blazor!》编写,升级.Net5,但因篇幅有限,省略了部分代码,完整示例代码:https://github.com/TimChen44/Blazor-ToDo

作者:陈超超
Ant Design Blazor 项目贡献者,拥有十多年从业经验,长期基于.Net技术栈进行架构与开发产品的工作,现就职于正泰集团。
邮箱:timchen@live.com
欢迎各位读者有任何问题联系我,我们共同进步。

从这次分享开始我通过制作一个ToDo应用来介绍Balzor的开发。

准备工作

项目准备

  1. 打开上一次分享内容创建项目
  2. 修改\wwwroot\css\app.css文件,只保留以下代码用于配置程序发生未捕获异常时的提示样式
#blazor-error-ui {
   
   
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}
#blazor-error-ui .dismiss {
   
   
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
  1. 修改index.htm文件,移除对‘bootstrap’样式的引用,因为我们使用ant-design-blazor来做UI
    <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" /><!--此行代码删除-->

引入ant-design-blazor包

在这里插入图片描述
✨ 特性
🌈 提炼自企业级中后台产品的交互语言和视觉风格。
📦 开箱即用的高质量 Razor 组件,可在多种托管方式共享。
💕 支持基于 WebAssembly 的客户端和基于 SignalR 的服务端 UI 事件交互。
🎨 支持渐进式 Web 应用(PWA)
🛡 使用 C# 构建,多范式静态语言带来高效的开发体验。
⚙️ 基于 .NET Standard 2.1/.NET 5,可直接引用丰富的 .NET 类库。
🎁 可与已有的 ASP.NET Core MVC、Razor Pages 项目无缝集成。

项目地址:https://github.com/ant-design-blazor/ant-design-blazor
文档地址:https://antblazor.com/

安装

  1. 用NuGet安装AntDesign包
Install-Package AntDesign -Version 0.5.3
  1. Program.cs 中注册:
public static async Task Main(string[] args)
{
   
   
    //其他代码
    builder.Services.AddAntDesign();
    await builder.Build().RunAsync();
}
  1. wwwroot/index.html 中引入静态文件:
<link href="_content/AntDesign/css/ant-design-blazor.css" rel="stylesheet">
<script src="_content/AntDesign/js/ant-design-blazor.js"></script>
  1. _Imports.razor 中加入命名空间
@using AntDesign
  1. 为了动态地显示弹出组件,需要在 App.razor 末尾添加一个 <AntContainer /> 组件。
<AntContainer /> <!--添加在这里-->

路由

在页面中切换,必定使用路由,我们先了解一下blazor的路由机制
App.razor 文件

<Router AppAssembly="@typeof(Program).Assembly">
    <Found Context="routeData">
        <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
    </Found>
    <NotFound>
        <LayoutView Layout="@typeof(MainLayout)">
            <p>Sorry, there's nothing at this address.</p>
        </LayoutView>
    </NotFound>
</Router>

在上面第一行把当前项目的程序集赋值给了 Router 组件的 AppAssembly 属性,这样程序在启动时检索程序集中所有的页面用于路由,路由信息通过页面文件顶部的 @page 标记进行定义。还可以通过 AdditionalAssemblies 属性支持多个程序集。
Route里面有两个模板属性,分别是路由命中和未命中显示的内容、

RouteView 组件用于显示路由的页面,这里从 Router 接收 routeData 以及任何所需的参数。
DefaultLayout="@typeof(MainLayout)" 定义了默认布局。

布局文件及菜单

编辑 Shared/MainLayout.razor 文件,制作程序的布局以及菜单。

@inherits LayoutComponentBase
<Layout>
    <Sider Style="overflow: auto;height: 100vh;position: fixed;left: 0;">
        <div class="logo">
            进击吧!Blazor!
        </div>
        <Menu Theme="MenuTheme.Dark">
            <MenuItem RouterLink="/">
                主页
            </MenuItem>
            <MenuItem RouterLink="/today" RouterMatch="NavLinkMatch.Prefix">
                我的一天
            </MenuItem>
            <MenuItem RouterLink="/search" RouterMatch="NavLinkMatch.Prefix">
                全部
  
### Blazor入门教程和资源 #### 什么是BlazorBlazor是一种用于构建交互式客户端Web应用程序的框架,允许使用C#而不是JavaScript来编写前端代码[^2]。对于.NET开发者而言,这意味着可以在前后端统一使用熟悉的技术栈。 #### 安装与配置环境 为了开始学习Blazor, 首先需要安装Visual Studio (建议版本为最新稳定版),并确保选择了“.NET跨平台开发”的工作负载。此外还需要下载并设置好.NET SDK。完成这些准备工作之后就可以创建第一个Blazor应用了。 #### 创建首个Blazor WebAssembly App 通过命令行工具或者IDE界面新建项目向导中的模板选项轻松建立新的Blazor WebAssembly工程: ```bash dotnet new blazorwasm -o MyFirstBlazorApp cd MyFirstBlazorApp dotnet run ``` 这段简单的脚本会初始化一个新的基于WebAssembly运行模式下的Blazor程序,并启动本地服务器供测试访问。 #### 学习组件化编程思维 在深入研究之前理解Blazor的核心概念——组件非常重要。每一个`.razor`文件代表了一个独立可重用的小部件(Component),它们之间可以通过参数传递数据相互协作形成复杂UI结构。例如下面展示的是如何定义一个带有属性绑定特性的简单按钮控件: ```csharp // Button.razor <button @onclick="OnClick"> Click me! </button> @code { [Parameter] public EventCallback OnClick { get; set; } } ``` 此段代码片段展示了基本的Razor语法以及事件处理机制的应用方式[^3]。 #### 掌握状态管理技巧 随着应用程序规模的增长,有效的状态管理和共享变得至关重要。官方推荐的方式之一就是利用依赖注入(Dependency Injection)特性配合专门的服务类(Service Class)来进行全局变量存储及操作。比如要实现计数器功能可以这样做: ```csharp public class CounterService : ICounterService { private int _count; public event Action<int> CountChanged; public void IncrementCount() { _count++; CountChanged?.Invoke(_count); } // ... other methods ... } // Register service in Program.cs or Startup.cs builder.Services.AddSingleton<ICounterService, CounterService>(); ``` 上述例子说明了服务注册过程和服务内部方法的设计思路。 #### 参考优秀开源库扩展能力 除了掌握基础知识点外,积极借鉴社区力量也是快速提升技能水平的有效途径。像[MASA.Blazor](https://github.com/BlazorComponent/MASA.Blazor)[^1], 这样的高质量第三方组件集合能够帮助加速开发进度同时提高用户体验质量。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值