diff --git "a/\345\206\234\344\273\225\351\271\217/2024.11.27-razor\346\240\207\350\256\260\347\254\224\350\256\260.md" "b/\345\206\234\344\273\225\351\271\217/2024.11.27-razor\346\240\207\350\256\260\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..9955e9de5a462cabca85879f28d87c4d1e8137cf --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.11.27-razor\346\240\207\350\256\260\347\254\224\350\256\260.md" @@ -0,0 +1,36 @@ +### Razor的基本概念 +定义: Razor是一种标记语法,允许开发者在HTML中嵌入C#代码。它通过使用@符号来转换HTML和C#代码 + +文件扩展名: 通常,Razor视图文件使用.cshtml扩展名,这意味着这些文件包含HTML和C#代 + +### Razor的主要功能 +1. +嵌入C#代码: +Razor支持在HTML中直接编写C#代码,使得开发者可以动态生成内容。例如,可以使用@DateTime.Now来显示当前日期和时间 + +2. +表达式和代码块: +隐式表达式: 以@开头,后跟C#代码,如@Model.Property。 +显式表达式: 使用@()包裹C#表达式,以确保表达式正确解析。例如,@(Model.Property + 1) + +代码块: 使用@{}来包含多行C#代码,这些代码不会直接输出到HTML中,而是用于逻辑处理 + +3. +数据绑定: +Razor支持与模型(Model)的双向数据绑定,允许视图直接访问和显示模型数据。这在MVC模式中非常有用,因为它简化了数据传递和显示的过程 + +4. +布局和部分视图: +Razor支持布局(Layouts)和部分视图(Partial Views),这使得开发者可以重用代码并保持一致的页面结构。例如,可以使用_Layout.cshtml来定义页面的通用结构 + +5. +控制结构: +Razor支持C#的控制结构,如@if、@for、@foreach等,这些结构允许开发者在视图中实现复杂的逻辑 + +### Razor的优势 + +简洁性: Razor语法简洁,易于学习和使用,尤其对于熟悉C#的开发者来说。 + +灵活性: 通过支持C#代码,Razor提供了强大的功能来处理复杂的业务逻辑和数据处理。 + +集成性: 与ASP.NET Core MVC无缝集成,提供了高效的视图渲染能力。 \ No newline at end of file diff --git "a/\345\206\234\344\273\225\351\271\217/2024.11.29-\345\210\227\350\241\250\347\254\224\350\256\260.md" "b/\345\206\234\344\273\225\351\271\217/2024.11.29-\345\210\227\350\241\250\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..4acd2890807c9201e808e3933d763a199414c42d --- /dev/null +++ "b/\345\206\234\344\273\225\351\271\217/2024.11.29-\345\210\227\350\241\250\347\254\224\350\256\260.md" @@ -0,0 +1,108 @@ +## CRUD列表 + +### MVC架构基础 +Model(模型): 负责数据的处理和业务逻辑。它与数据库交互,获取和存储数据。 + +View(视图): 负责数据的展示。它接收来自控制器的数据并渲染给用户。 + +Controller(控制器): 处理用户请求,协调模型和视图。它接收用户输入,调用模型进行数据处理,并将结果传递给视图。 + +### 数据模型(Model) + +定义与数据库表对应的数据模型。可以定义如下: +``` +public class User { + public int Id { get; set; } + public string Name { get; set; } + public string Email { get; set; } +} +``` + +### 控制器(Controller) + +控制器负责处理HTTP请求并返回相应的视图 + +#### 读取(Read) + +``` +public class UserController : Controller { + // 显示用户列表 + public ActionResult Index() { + List users = db.Users.ToList(); + return View(users); + } +} +``` + +#### 创建(Create): + +``` +// 显示创建表单 +public ActionResult Create() { + return View(); +} + +// 处理创建表单提交 +[HttpPost] +public ActionResult Create(User user) { + if (ModelState.IsValid) { + db.Users.Add(user); + db.SaveChanges(); + return RedirectToAction("Index"); + } + return View(user); +} +``` + + +### 视图(View) +使用Razor视图引擎(或其他模板引擎)来渲染数据。 + +用户列表视图 +``` +@model IEnumerable + + + + + + + + + + + + @foreach (var user in Model) { + + + + + + + } + +
IDNameEmailActions
@user.Id@user.Name@user.Email + Edit | + Delete +
+ +Create New User +``` +#### 创建和编辑表单视图 + +``` +@model YourNamespace.User + +
+ @Html.AntiForgeryToken() +
+ @Html.LabelFor(m => m.Name) + @Html.TextBoxFor(m => m.Name) +
+
+ @Html.LabelFor(m => m.Email) + @Html.TextBoxFor(m => m.Email) +
+ +
+``` \ No newline at end of file