diff --git "a/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/20241126mvc\347\254\224\350\256\260.md" "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/20241126mvc\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..1d11351588cd300af09c3459916a2c2c63679022 --- /dev/null +++ "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/20241126mvc\347\254\224\350\256\260.md" @@ -0,0 +1,43 @@ +## MVC架构基础 +MVC(Model-View-Controller)是一种软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。 + +模型(Model):代表应用程序的数据和业务逻辑。它负责管理应用程序的状态、数据存储和检索,以及与数据库的交互。 + +视图(View):负责显示模型中的数据以及向用户呈现界面。它获取用户输入并将其传递给控制器。视图通常只关注展示和用户交互,而不处理业务逻辑。 + +控制器(Controller):充当模型和视图之间的中介。它接收来自用户的输入,更新模型的状态,并将更新的数据传递给视图进行显示。 +控制器传参 + +在ASP.NET Core MVC中,控制器通过接收用户请求来处理数据,并将处理结果传递给视图进行展示。控制器和视图之间的数据传递可以通过多种方式实现,主要包括: + +## 视图模型(ViewModel): + +专为视图设计的数据结构,用于在控制器与视图之间传递数据。 + +封装与特定视图相关的数据和逻辑,确保视图代码更易于理解和维护。 + +示例:创建包含文章和评论列表的视图模型来展示文章详情页面 + +ViewData: +ControllerBase的属性,类型为ViewDataDictionary,即字典结构。 + +用于在控制器向视图传递数据,以键值对形式存储。 + +数据生命周期在当前请求的视图渲染期间。 + +优点是简单直接,但作为弱类型字典,编译时无法进行类型检查,可能导致视图中使用数据时出现运行时错误。 +ViewBag: + +ViewData的动态包装器,利用动态属性方式访问数据。 + +使代码在视图中更简洁,但同样存在运行时类型不匹配风险 + +ViewBag基于ViewData实现,通过动态属性访问方式对ViewData进行包装。 + +TempData: + +ControllerBase的属性,用于不同请求间(特别是重定向场景)传递数据。 + +以键值对形式存储,具有一次性读取特性,数据读取一次后标记为删除(下次请求读取为null)。 + +适用于在不同请求间传递需后续使用但不长期存储的数据。 \ No newline at end of file diff --git "a/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/20241128mvc\350\257\225\345\233\276\347\254\224\350\256\260.md" "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/20241128mvc\350\257\225\345\233\276\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..6aa7bf980795d58bc60991cb0c64bb9194acdb8b --- /dev/null +++ "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/20241128mvc\350\257\225\345\233\276\347\254\224\350\256\260.md" @@ -0,0 +1,44 @@ +## 视图基础 + +视图的作用: + +视图是MVC架构中的V(View)部分,负责展示数据给用户。 + +它从控制器接收数据,并将其以用户友好的方式呈现出来。 + +## 视图的位置: + +在ASP.NET Core MVC项目中,视图通常存储在Views文件夹下,每个控制器对应一个子文件夹,视图文件则以.cshtml扩展名保存。 + +## 视图数据(ViewData和ViewBag) +ViewData: + +是一个字典对象,用于在控制器和视图之间传递数据。 + +它的键是字符串类型,值是对象类型。 + +由于它是弱类型的,因此在视图中使用时需要进行类型转换。 + +ViewBag: + +是ViewData的动态包装器,允许以动态属性的方式访问ViewData中的数据。 + +使用ViewBag可以使视图代码更加简洁,但同样需要注意类型安全问题。 + + +## 视图渲染和返回 + +控制器通过调用View()方法并传递视图名称和可选的视图模型来渲染视图。 + +View()方法返回一个IActionResult类型的对象,该对象表示要发送给客户端的HTTP响应。 + +视图文件被Razor视图引擎解析和渲染成HTML,然后作为HTTP响应的主体发送给客户端。 + + + + +# 作业 + +![alt text](screenshot-1732786624593.png) + +![alt text](screenshot-1732786656613.png) \ No newline at end of file diff --git "a/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/screenshot-1732786624593.png" "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/screenshot-1732786624593.png" new file mode 100644 index 0000000000000000000000000000000000000000..4224cec50f447a90b81033e69424700c1c89ae83 Binary files /dev/null and "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/screenshot-1732786624593.png" differ diff --git "a/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/screenshot-1732786656613.png" "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/screenshot-1732786656613.png" new file mode 100644 index 0000000000000000000000000000000000000000..f113c8768b8e07ee9ce670875a62ee0601c9aa22 Binary files /dev/null and "b/\346\241\202\350\205\276\346\274\202/\350\257\276\345\240\202\347\254\224\350\256\260/screenshot-1732786656613.png" differ