netcore 入门之MVC

MVC分层

1.Model
Model
ModelRepository(模型仓储)
2.View

3.Controller

内容协商(W3C协议)
使用:

  • ConfigutationService中添加services.AddMvc().AddXmlSerializerFormatters();
  • Controller返回的数据类型更新为ObjectResult或者其他符合数据协商的数据类型

作用

  • 处理传入的http请求并相应用户操作
  • 若正在构建API,将模型是护具返回给调用方
    *或者选择View试图并将模型数据传递给视图,然后视图生成所需的Html数据

安装MVC

注册MVC

ConfigurationService添加MVC:services.AddMvc();

AddMvc和AddMvcCore区别(AddMvc内部调用AddMvcCore)

  • AddMvcCore只安装了MVC的核心功能
  • AddMvc安装了MVC核心功能及第三方常用方法,例如json转换等

使用MVC

app.UseMvcWithDefaultRoute()
一般写在UseStaticFile后面
这样若是出错问题,在访问静态问题件就出错,可以通过中间件短路从而减少加载UseMVC的资源

Controller到View的数据传递

传递方式

弱类型视图

ViewData

1.Controller在这里插入图片描述
View
接收ViewData
在这里插入图片描述
概括:
弱类型字典对象
使用string字典的键值,存储和查询ViewData字典中的数据
运行时动态解析
没有智能感知,编译时也没有类型检测
即需要进行强转换
在这里插入图片描述

ViewBag

Controller(传递ViewBag)
在这里插入图片描述
View(接收ViewBag)
在这里插入图片描述

概括
  • View Bag是ViewData的包装器
  • 都创建了一个弱类型的视图
  • ViewData使用字符串键名来存储和查询数据
  • ViewBag使用动态属性来存储和查询数据
  • 都是在运行时动态解析
  • 均不提供编译时类型检查,没有智能提示
  • 首选方法是使用强类型模型对象,将数据从控制器传递到视图

强类型视图

Controller
直接通过View函数传递对应实体对象
在这里插入图片描述
View
通过@model引入并转换
在这里插入图片描述
概括
视图中使用@model指定模型类型
使用@Model访问模型对象属性

ViewModel视图模型

也称数据 传输对象(DTO)

https://www.cnblogs.com/Leo_wl/p/6013762.html
ViewModels
1.新建ViewModels并新建Controller对象的方法ViewModel
在这里插入图片描述
2.通过ViewMode整合需要展示的数据

在这里插入图片描述

Controller
在controller将数据赋值给viewmodel
在这里插入图片描述
View
@model引入对应ViewModel数据
在这里插入图片描述

概括
强类型的优化版

传递List数据到视图

1.Model
Repository:新建获取数据接口
在这里插入图片描述

MockRepository:实现Repository接口

在这里插入图片描述
Controller:获取list数据并传递
在这里插入图片描述
View
接收list数据(可以用IEnumerable)
在这里插入图片描述

布局页面

View(定义全局使用)

_Layout.cshtml(Shared文件夹下新增布局文件)
在这里插入图片描述
其他页面定义使用
在这里插入图片描述

Sections(定义页面自身数据)

例如定义该主页面需要使用js文件,而其他页面不需要
_Layout.cshtml
在这里插入图片描述
其他页面
需要引用scripts文件
在这里插入图片描述
不需要则不写

_ViewStart.cshtml(视图开始)

视图开始,用于控制所有页面的Layout文件;可以写逻辑处理
一般是放在Views的根目录
可以写逻辑处理
在这里插入图片描述
代码
在这里插入图片描述
优先级
cshtml文件>cshtml文件所在的文件夹>Views文件夹
内层_ViewStart会替代上一层
Views文件不想要布局页,可以写Layout=null
Views文件使用其他布局页,可以写Layout=“Layout名”
在这里插入图片描述

概括

  • 目的:让web应用程序所有视图保持外观一致性
  • 类似于AspNet web Form的母版页
  • 布局视图以.cshtml扩展名结尾,默认文件名为"_Layout.cshtml"
  • 默认放在Views/Shared文件下面
  • 可以包含多个布局视图文件

路由

传统路由
传统路由写法1
在这里插入图片描述
传统路由写法2
在这里插入图片描述
属性路由
可以在Controller和方法上面使用Route("")来声明特定的路由

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值