From 40892d8e38b8636f159be7557d279ca182db4e1a Mon Sep 17 00:00:00 2001 From: l y Date: Sun, 24 Nov 2024 21:46:53 +0800 Subject: [PATCH] =?UTF-8?q?20241118-1120=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../202411.18-\347\254\224\350\256\260.md" | 62 +++++++++++++++++++ .../202411.20-\347\254\224\350\256\260.md" | 48 ++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 "\344\275\231\344\270\275/202411.18-\347\254\224\350\256\260.md" create mode 100644 "\344\275\231\344\270\275/202411.20-\347\254\224\350\256\260.md" diff --git "a/\344\275\231\344\270\275/202411.18-\347\254\224\350\256\260.md" "b/\344\275\231\344\270\275/202411.18-\347\254\224\350\256\260.md" new file mode 100644 index 0000000..ca75fa9 --- /dev/null +++ "b/\344\275\231\344\270\275/202411.18-\347\254\224\350\256\260.md" @@ -0,0 +1,62 @@ +## 定义: + +1.数据结构: Models定义了应用程序中的数据结构,包括实体、对象和数据字段。 +2.业务逻辑: Models包含与数据相关的业务规则,例如验证规则、计算逻辑和数据转换。 + +3.作用: + +* 数据表示: Models是数据在应用程序中的逻辑表示。它们定义了数据的组织方式,使其更易于理解和处理。 + +* 业务规则: Models中包含的业务逻辑规则确保数据的有效性、完整性和一致性。 + +* 状态管理: Models可以跟踪应用程序中的状态变化,使得能够更好地管理数据的生命周期。 + +* 数据验证: Models中定义的验证规则用于验证用户输入,确保输入的数据符合应用程序的期望。 + +* 模型绑定: Models通过模型绑定将用户提交的数据映射到控制器中,实现了用户请求和应用程序数据的解耦。 + +4.通过定义和使用Models,开发人员能够更清晰地组织和管理应用程序的数据,提高代码的可维护性和可测试性。 Models的作用不仅仅是存储数据,还包括在应用程序中对数据进行操作和管理的一系列任务。 +5.输入数据绑定: +输入数据绑定是将用户提交的数据映射到控制器的动作方法参数或模型中的过程。 +ASP.NET Core MVC框架通过模型绑定器(Model Binder)来执行输入数据绑定的任务。 +控制器的动作方法可以直接接收参数,或者通过在方法参数上使用 [FromBody]、[FromQuery]等特性来指定数据来源。 +6. 模型绑定: +模型绑定是将模型对象与HTTP请求中的数据进行关联的过程。 +在控制器的动作方法中,可以通过参数接收模型对象,并通过模型绑定器将请求数据映射到该模型对象中。 +模型绑定器会自动尝试将请求数据与模型对象的属性进行匹配。 +7. 输出数据绑定: +输出数据绑定是将模型对象中的数据传递到用户界面的过程。 +在视图(View)中,可以通过@model指令声明绑定到视图的模型类型。 +Razor视图引擎通过模型对象的属性进行输出数据绑定,将模型中的数据渲染到HTML中。 +8. 显式数据绑定: +在某些情况下,开发人员可能需要显式地执行数据绑定操作,而不依赖于框架的自动绑定。 +这可以通过在控制器中手动调用 TryUpdateModel 或 UpdateModel 方法来实现。 +9. 自定义模型绑定: +ASP.NET Core MVC允许开发人员创建自定义的模型绑定器,以满足特定的业务需求。 +通过实现 IModelBinder 接口,可以创建自定义的绑定器,并在应用程序配置中注册它们。 +10. 复杂对象绑定: +数据绑定支持复杂对象,包括嵌套对象、集合和数组。 +框架会尝试递归地将请求数据映射到复杂对象的所有层次。 +数据绑定是ASP.NET Core MVC中重要的机制之一,它简化了处理用户输入和管理模型数据的过程,同时提供了灵活性和可扩展性,使开发人员能够更容易地构建出强大而高效的Web应用程序。 + +11.控制器类 (PostController) +``` +public class PostController : Controller +{ + [HttpPost] + public IActionResult Index([FromBody] NicknameModel model) + { + // 从请求中获取昵称数据 + string nickname = model.Nickname; + + // 将昵称存储到 ViewData 中,以便在视图中使用 + ViewData["Nickname"] = nickname; + + // 返回视图 + return View(); + } +} +``` +12.作用:控制器接收 POST 请求中的数据,并将昵称存储到 ViewData 中,最后返回一个视图来显示该昵称。 + +[FromBody] 表示框架从请求体中获取数据,并将其自动转换为方法参数所需的类型。在此示例中,它会将请求体中的 JSON 数据转换为 NicknameModel 对象。 \ No newline at end of file diff --git "a/\344\275\231\344\270\275/202411.20-\347\254\224\350\256\260.md" "b/\344\275\231\344\270\275/202411.20-\347\254\224\350\256\260.md" new file mode 100644 index 0000000..3ae72c1 --- /dev/null +++ "b/\344\275\231\344\270\275/202411.20-\347\254\224\350\256\260.md" @@ -0,0 +1,48 @@ +## ASP.NET Core 路由模式与启动配置 +### 路由模式解析 +1.路由模式定义了 URL 的结构以及如何将其映射到控制器的操作方法中。ASP.NET Core 默认的路由模式为: +``` +"{controller=Home}/{action=Index}/{id?}" +路由模式的组成部分 +{controller=Home} +指定控制器的占位符。如果 URL 中未明确指定控制器,则使用 HomeController 作为默认值。 + +{action=Index} +指定操作方法的占位符。如果 URL 中未明确指定操作方法,则使用 Index 作为默认值。 + +{id?} +表示一个可选的参数,占位符为 id,可以传递到控制器方法中 +``` + +2.通过表单提交传递参数: 当使用表单提交数据时,可以通过表单字段的name属性与Action方法的参数名匹配来传递参数。 +``` +[HttpPost] +public ActionResult Save(string username, int age) +{ + // 这里的参数将从表单中获取 +} +参考:[ASP.NET MVC页面传值方式总结] +``` + +3.通过模型对象传递参数: 你可以创建一个模型类,并在Action方法中使用该模型作为参数,MVC会自动将表单数据绑定到模型对象上。 +``` +public class UserInfoViewModel +{ + public string Username { get; set; } + public int Age { get; set; } +} + +[HttpPost] +public ActionResult Save(UserInfoViewModel model) +{ + // 使用model对象 +} +参考:[ASP.NET MVC页面传值方式总结] +``` + +## 参数名的匹配规则 +1.在路由模式中,{id?} 定义了一个可选参数,其名称为 id。控制器方法的参数名必须与此占位符一致,例如: + +* 如果路由模式为 {productId?},则方法参数名应为 productId。 + +* 参数名不匹配时,将导致请求无法正确解析参数 \ No newline at end of file -- Gitee