MVC简介

1、mvc简介 :mvc一种模式、思想(特定问题的一种解决方案,与平台和语言无关),解决的是表现和逻辑相分离的问题。

  asp.net mvc:是mvc思想在.net平台下的实现的框架,只针对web开发

  web开发一直在追求表现和逻辑相分离

  

  M:Model,实体业务逻辑

  V:View,视图

  C:Controller,控制器



2.MVC优点:

(1)、核心是为了分工,也就是分工的好处。

(2)、表现与逻辑相分离

(3)、更好地维护程序

(4)、为了页面更加简洁,节省网络带宽,传输更快,用户体验更好。

3、Controller

(1)、必须建在Controllers文件夹下

(2)、命名必须以Controller结尾

(3)、必须实现IController接口

(4)、Controller下包含Action方法


mvc请求地址:http://xxx.com/控制器/Action

4、View

(1)、如果不指定视图名字默认返回跟Action同名的视图,如果返回其它视图需要指定视图名字。

5、控制器向视图传值

(1)、直接把对象通过view的参数传递到视图,视图用 Model来获取。

(2)、用ViewData来传递数据,视图用 ViewData来获取。

(3)、用ViewBag来传递数据,视图用 ViewBag来获取。


6、路由:

(1)、routes.IgnoreRoute忽略(禁止)路由规则

(2)、在控制器里获取路由的参数,必须参数名保持一致。

7、强类型视图:通过view()、ViewData.Mode

  传递额外的数据:1、放在viewbag、viewdata 2、扩展模型

8、rezor视图引擎

(1)、mvc3.0之后出现了razor,设计理念:简单、直观

(2)、就一个核心字符:@

(3)、能够在代码与标记(html标记语言)之间顺畅转换

(4)、表达式、语句块

(5)、表达式:隐式表达式、显式表达式

(6)、邮箱可以直接输出

(7)、出现二义性的时候用显示表达式()来解决

(8)、输出@用两个@@

(9)、@输入变量自动进行html编码的,@Html.Raw(msg)直接显示原始字符串,不进行编码

(10)、语句块:1、@{} 2、类似if、for、foreach、、、、

(11)、在语句块中输出纯文本:1、@:单行纯文本 2、<text><text>:多行纯文本

(12)、razor注释:@*-----注释的内容--------*@

9、razor布局

(1)、寻找视图的途径:首先从跟控制器同名的文件夹下寻找,如果找不到从Shared文件夹下找,Shared下的视图可以被所有的控制器所访问。

(2)、布局文件一般放在Shared文件夹下。

(3)、@RenderBody():是一个占位符,将来被具体的视图内容所替代。

(4)、设置布局属性一般在_ViewStart.cshml里设置Layout属性。

(5)、@RenderSection渲染节,默认情况下子视图必须实现,可以指定第二个参数来设置非必需实现,也可在布局文件判断子视图是否实现了此节。

10、Html辅助方法

(1)、表单:Html.BeginForm() 默认是post请求,然后请求当前的控制器下的action。

(2)、Html辅助方法如果返回字符串不需要加大括号,如果不是返回字符串需要加大括号。

(3)、@Html.TextBox-文本框

@Html.DorpDownList-下拉框

@Html.RadioButton-单选框

@Html.CheckBox-复选框

(4)、生成a标签:@Html.ActionLink("点我", "Test", "Home", new { target="_blank",@class="css"})


总结:在调用辅助方法时,会检查viewdata对象以获得当前显示的值


11、模型绑定(自动装配)

视图向控制器传数据:1、查询字符串(get) 2、表单集合(post) 3、路由里边的参数

当一个action接受用户请求的时候,会使用一个模型绑定器的对象,首先它会构造一个模型对象,然后去遍历这个模型的属性,然后去查询字符串、表单集合、路由 与属性名同名的参数,将参数值赋给该属性。

12、在views文件夹下web.config里添加命名空间,强类型可以不用完全限定。

13、强类型辅助方法(在原辅助方法后加For):

14、a标签和浏览器端直接输入地址都是GET请求,表单里边指定method属性为post为post请求。

15、mvc验证

(1)、注解(特性):在实体类上设置特性。

(2)、实现服务端验证:

第一步:设置实体类的特性。( [Required]、 [StringLength(50)]、[Compare("Name")]、[RegularExpression(@"d{4}")])

第二步:判断modelstate

(3)、在模型绑定器绑定完模型后,会去收集这个模型上所有的特性,然后依次检查每个特性,如果有未通过的就 会记录在modelstate对象里,如果全通通过isvaild为true。

(4)、Html.ValidationMessageFor显示验证信息

(5)、ErrorMessage设置友好的提示信息。

(6)、[MetadataType(typeof(PersonExtend))]:共同同一份元数据

(7)、特性经过编译之后会放在元数据里

(8)、元数据:描述数据的数据

程序集:类型元数据、程序元数据、IL代码、资源文件


类型:类、接口、委托等等,类型元数据:字段、属性、方法、父类

程序集元数据:程序集包含那些成员、被哪些程序集所引用、程序集版本信息


(9)、客户端验证:基本上和服务端一样,引用相关的js文件即可。

jquery-1.7.1.min.js、jquery.validate.min.js、jquery.validate.unobtrusive.min.js

原文地址:https://www.cnblogs.com/mvc-ef/p/7147725.html