MVC基础
回顾
l Ef三种模式
数据库优先 dbfirst (使用最多)
模型优先 model first (基本上没公司用)
代码优先 code first (第二)
code first:
怎么来指定一个字符串的长度?
Stringlength(长度)
怎么来指定一个主键?
Key
怎么来指定一个表明?
Table(“表名”)
怎么来设置一个必填字段?
Requaire
Ø MVC
M: Model 模型 (dto)
V:View 视图 , 用来显示界面(html代码)
C:Controller 控制器
M作用:用于控制器与视图之间进行数据传递
Controller:
提供访问页面的方法
Mvc里边的页面需要借助控制器完成
要想访问 views/home/index.cshtml
地址栏 home(控制器名称)/index(控制器里边的方法,action)
访问格式:/controller(控制器名称)/action(控制器方法)
l 三层架构
界面层(显示层)
业务逻辑层 BLL
数据访问层 DAL
l Mvc和三层架构
(mvc属于三层架构里边第一次)
Mvc作用:使代码耦合性更低,有利于团队合作,与代码公用
提高可维护性
l Mvc(.cshtml)和Webform(.aspx)区别?
1:webform会生成一个额外的代码,会污染html
Mvc不会
2:webform html和cs是一一关联的耦合性很高,
Mvc html代码和cs代码是完全分离的,耦合性底,维护性高,代码可重用率高
Ø 怎么修改MVC的起始页
配置文件里边去配置起始页
路由配置:
Ø action跳转
l 一个action跳转到另外的action
l 夸控制器跳转
Ø Razor语法
在页面写代码的方式
Webform <% cs代码 %>
Mvc中使用razor语法写cs代码 @{cs代码}
l 使用razor语法输出系统时间
@{
@Datetime.now.tostrng();
}
或者@Datetime.now.tostrng();
l 使用razor输出1-100
l 一排输出10个数
取模 %10
Ø 控制器向页面传参
l Viewdata传参
键值对:
Viewdata[“键”] = “值”
Viewdata[“username”] = “helle value”
l Viewbag传参
匿名类型
Viewbag.键 = “值”
Viewbag.username = “helle value”
l Model传参
View(“model参数”); 任意类型
前台可以直接使用model获取数据
默认没有提示可以做类型转换
@{
DAL.Users u = model as DAL.Users;
}
Ø Mvc中布局页
Webform母版页
@master,母版页可以挖多个坑
MVC布局页只能挖一个大坑
MVC中挖坑的方式
@renderbody();
l 使用布局页
需要在使用的地方制定需要使用的布局页
layout = “布局页的地址”;
layout = “~/views/ _LayoutPage.cshtml”;
Ø Mvc嵌套布局页
子页面本身也是布局页
Ø Mvc区段,块
作用:解决mvc只能挖一个坑
1:在布局页设置一个区段
@renderbody();
@rendersection(“区段的名字”,”是否子页面必须填空”);
第二个参数如果不传的话默认是:? 必填,默认ture
2:在子页面填坑
@section 区段的名字
{
填坑内容
}