diff --git a/notes/helloshop/webapp/blazor-globalization-localization.md b/notes/helloshop/webapp/blazor-globalization-localization.md
new file mode 100644
index 0000000..e49968c
--- /dev/null
+++ b/notes/helloshop/webapp/blazor-globalization-localization.md
@@ -0,0 +1,23 @@
+# Blazor 全球化与本地化
+
+Blazor 应用程序可以通过使用 .NET Core 的全球化和本地化功能来支持多种语言和文化。本文将介绍如何在 Blazor 应用程序中实现全球化和本地化。
+
+## Blazor WebAssembly
+
+```xml
+
+ true
+
+```
+```shell
+dotnet add package Microsoft.Extensions.Localization
+```
+
+## Blazor Server
+
+```csharp
+builder.Services.AddCustomLocalization();
+```
+```csharp
+app.UseCustomLocalization();
+```
diff --git a/notes/helloshop/webapp/blazor-validation.md b/notes/helloshop/webapp/blazor-validation.md
new file mode 100644
index 0000000..84aa92e
--- /dev/null
+++ b/notes/helloshop/webapp/blazor-validation.md
@@ -0,0 +1,76 @@
+# Blazor 表单验证
+
+## 使用数据注解 DataAnnotations 验证
+
+```csharp
+public class Employee
+{
+ [Required(ErrorMessage = "Name is required")]
+ public string Name { get; set; }
+}
+```
+
+```csharp
+@page "/employee"
+@using System.ComponentModel.DataAnnotations
+@using Microsoft.AspNetCore.Components.Forms
+
+
Employee Form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private Employee employee = new Employee();
+}
+```
+
+## 使用 FluentValidation 验证
+
+```shell
+dotnet add package Blazored.FluentValidation
+```
+
+```csharp
+public class EmployeeValidator : AbstractValidator
+{
+ public EmployeeValidator()
+ {
+ RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required");
+ }
+}
+```
+
+```csharp
+@page "/employee"
+@using FluentValidation
+@using FluentValidation.Results
+
+Employee Form
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+## 自定义验证
+
+