diff --git "a/\351\231\210\346\272\220/20260112-MVC\347\254\224\350\256\260" "b/\351\231\210\346\272\220/20260112-MVC\347\254\224\350\256\260" new file mode 100644 index 0000000000000000000000000000000000000000..581ea2533324714273f2cb68cc6ca09732811597 --- /dev/null +++ "b/\351\231\210\346\272\220/20260112-MVC\347\254\224\350\256\260" @@ -0,0 +1,13 @@ +# 笔记 + +## ASP.NET MVC 的特点 + +- 清晰的问题分离:MVC 设计模式有助于清晰地分离问题,使得开发者可以专注于应用程序的一个方面,而不会影响到其他方面。 + +- 易于测试:由于关注点的分离,ASP.NET MVC 应用程序更容易进行单元测试和维护。 + +- 完全控制 HTML、CSS 和 JavaScript:开发者可以完全控制页面标记,并使用标准的 HTML、CSS 和 JavaScript 技术。 + +- 强大的 URL 路由功能:ASP.NET MVC 提供了强大的 URL 路由,使得创建 SEO 友好的 URL 和 RESTful URL 变得简单。 + +- 与 Visual Studio 的无缝集成:ASP.NET MVC 与 Visual Studio 无缝集成,提供了一系列工具和功能来加速开发过程。 \ No newline at end of file diff --git "a/\351\231\210\346\272\220/20260114-MVC\347\254\224\350\256\260" "b/\351\231\210\346\272\220/20260114-MVC\347\254\224\350\256\260" new file mode 100644 index 0000000000000000000000000000000000000000..f4de67953dbf218b2706f6affc49871d1f970d6c --- /dev/null +++ "b/\351\231\210\346\272\220/20260114-MVC\347\254\224\350\256\260" @@ -0,0 +1,22 @@ +# 笔记 + +## 路由与模型绑定 + +ASP.NET Core MVC 提供强大的 路由系统,支持基于约定和属性的路由定义。开发者可以通过路由模板轻松定义 URL 格式,例如: +``` +routes.MapRoute( + name: "Default", + template: "{controller=Home}/{action=Index}/{id?}"); +``` + +模型绑定 是将客户端请求数据(如表单值、查询字符串)自动转换为控制器操作方法参数的过程。结合 数据注解,可以实现模型验证: +``` +public class LoginViewModel { + [Required] + [EmailAddress] + public string Email { get; set; } + [Required] + [DataType(DataType.Password)] + public string Password { get; set; } +} +``` \ No newline at end of file diff --git "a/\351\231\210\346\272\220/20260115-MVC\347\254\224\350\256\260" "b/\351\231\210\346\272\220/20260115-MVC\347\254\224\350\256\260" new file mode 100644 index 0000000000000000000000000000000000000000..582a384f7cbcf00f147e88429df86c63e57c694f --- /dev/null +++ "b/\351\231\210\346\272\220/20260115-MVC\347\254\224\350\256\260" @@ -0,0 +1,13 @@ +# 笔记 + +## Razor 视图引擎 + +Razor 是一种轻量级模板语言,用于在 HTML 中嵌入 C# 代码。它支持强类型视图和标记帮助程序,提供了灵活的页面布局和组件化开发能力: +``` +@model IEnumerable + +``` diff --git "a/\351\231\210\346\272\220/20260116-MVC\347\254\224\350\256\260" "b/\351\231\210\346\272\220/20260116-MVC\347\254\224\350\256\260" new file mode 100644 index 0000000000000000000000000000000000000000..49ec6b5430471450d496c89c366a61bb0021ebc3 --- /dev/null +++ "b/\351\231\210\346\272\220/20260116-MVC\347\254\224\350\256\260" @@ -0,0 +1,64 @@ +# 笔记 + +## 基本控制器 + +``` +using System.Diagnostics; +using Microsoft.AspNetCore.Mvc; +using Project.Models; + +namespace Project.Controllers; +public class KzqController : Controller +{ + private static readonly List MxModelList = new() + { + new MxModel{Id=1,Name="李",Age=1}, + new MxModel{Id=2,Name="易",Age=2}, + new MxModel{Id=3,Name="峰",Age=3} + }; + + + public IActionResult Index(string kw) + { + var data = MxModelList.AsEnumerable(); + + if (!string.IsNullOrWhiteSpace(kw)) + { + kw = kw.Trim(); + data = data.Where(x =>x.Id.ToString() == kw ||x.Name.Contains(kw, StringComparison.OrdinalIgnoreCase) ||x.Age.ToString() == kw); + } + + return View(data.ToList()); + } + + public IActionResult Delete(int Id) + { + MxModelList.RemoveAll(x => x.Id == Id); + return RedirectToAction("Index"); + } + + + public IActionResult Edit(int Id) + { + var item = MxModelList.FirstOrDefault(x => x.Id == Id); + if (item == null) return NotFound(); + return View(item); + } + + public IActionResult Save(int Id, string Name, int Age) + { + var item = MxModelList.FirstOrDefault(x => x.Id == Id); + if (item != null) + { + item.Name = Name; + item.Age = Age; + } + + return RedirectToAction("Index"); + } + + + +} + +``` \ No newline at end of file