整理这张纸条,一次分享。关于基础MVC的一切都介绍了,但是很基础。本来打算发表完一篇文章,但是发现东西很多,就把它分成了两篇,这是最后一篇!
1.ASP.NET MVC请求流程
1
2.控制器
(1)控制器在ASP.NET MVC中扮演处理客户请求的角色
1)系统。必须实现Web.Mvc.IController接口
-通常直接继承系统。控制器类
2)必须以控制器结束
3)通过不同的操作处理特定的客户请求
3.行动
(1)表示继承系统的类中定义的返回值类型。Web.Mvc.Controller兼容
(2)动作结果方法
复制的代码如下:命名空间MVC应用。控制器{ public class home controller : controller { public action result index(){ view bag。留言='韩应龙';返回视图();}}}
(3)动作结果3)ASP。净MVC3
(4)注意事项
1)可以通过URL访问的操作必须是公共方法
2)如果标记了[非操作]属性,则不能通过网址访问该操作
3)默认情况下,Action的方法名是Action名称(通过URL访问的名称)。如果您有特殊要求,您也可以通过[动作名称(' othercionname ')]来标记特定的动作名称
4)我们可以通过【httpset】【httpset】等来区分处理不同请求动作的同名动作。
4.ASP.NET路由选择,过滤器
(1)ASP.NET路由模块的职责是将传入的客户端(浏览器)请求映射到特定的MVC控制器操作
(2)路由机制
1)路由引擎-将URLS映射到控制器
复制代码如下:公共静态无效注册路由(路由集合路由){routes。ignoreroute ('{resource})。axd/{ * path info } ');路线。MapRoute('Default ',//路由名称' {controller}/{action}/{id} ',//带有参数的URL new { controller=' home ',action=' index ',id=URL parameter . optional }//参数默认值);}受保护的void Application _ Start(){ register routes(route table。路线);}
2)/产品/细节/8
复制代码如下:routes.maproute ('default ',//路由名称' {controller}/{action}/{id} ',//带参数的URL公共类产品控制器:控制器{公共操作结果详细信息(int id){返回视图();} public action result Edit(int id){ return View();}}
5.MVC 3中的路由更改
(1)来自系统。将3.5组件传送到系统。Web 4组装,它已经成为基本服务的一部分。
(2)在ASP.NET 4中,路由模块在根网络中注册。所以你不需要在网上单独注册。在自己的应用程序中配置。
(3)由3)urlsroutingmodule处理的事件数量减少了一个,并且只处理PostResolveRequestCache事件
(4)HttpRequest添加了一个RequestContext属性
(5)增加了PageRouteHandler,支持WebForm路由功能
(6)在6)RouteCollection中增加了MapPageRoute的四种重载方法,使得添加路由规则更加方便
6.路由优势
(1)可以方便地实现REST服务
(2)Url友好,有利于SEO,增强用户体验
(3)控制器和动作的调用规则可以定制,以减少耦合并提高灵活性
7.过滤器
(1) Filter是一种AOP模式,可以干扰横切的一系列操作。它在很大程度上解耦了依赖关系,使我们的代码更加简洁,功能更加强大。
(2)ASP中提供了四种类型的过滤器接口。NET MVC
1)IActionFilter
2)IAuthorizationFilter
3)IEExceptionFilter
4)IResultFilter
(3)ASP。NET MVC提供了输出缓存属性、handlerrorattribute、authorizeittribute和其他常见的筛选器实现
(4)4)过滤器的接入过程
1)以ActionFilter为例
8.SP中MVC 3中的过滤器。网
(1)提供全局注册过滤功能
(2)为儿童行动提供输出缓存支持
1)结合[儿童行动]
9.模型
(MVC中的Model主要负责维护数据状态,从数据存储器中检索数据并传输给控制器。客户端传输的数据经过处理后再传输回数据存储系统,这是MVC中比较重的一层
(2)ASP。NET MVC框架本身并不关心数据存储系统,通过一些额外的帮助类和模型绑定机制简化了Model的使用
1)具有自绑定机制
2)自我验证机制
(3)ASP的改进。NET MVC3模型
1)ASP。NET MVC3模型主要改进了验证机制
-数据验证(数据注释)
-客户端验证(客户端验证)
-远程验证(远程验证)
-自我验证(自我验证)
(4)数据验证
1)通过系统的方法集进行验证。componentmodel.dataannotations,并且对客户端验证有一些方便的影响
2)可以通过继承ValidationAttribute实现自定义的ValidationAttribute
(5)客户验证
1)使用Jquery的身份验证插件
2)jquery . validate . include . mis . js实现客户端验证
-启用客户端身份验证
appSettings
添加键='ClientValidationEnabled '值='true' /
add key=' UnobtrusiveJavaScriptEnabled '值='true' /
/appSettings
-引用JQuery
script src=' http :http://www . cn blogs.com/Scripts/jquery . validate . min . js ' type=' text/JavaScript '/script
script src=' http :http://www . cn blogs.com/Scripts/jquery . validate . include . min . js ' type=' text/JavaScript '/script
-特别核查
@{
Html。EnableClientValidation();
}
(6)远程验证
1)它类似于模型中的RequiredAttribute
1)[远程('验证的操作名','控制器名',错误消息='远程验证是失败的错误消息')]
2)注意
1)用于远程身份验证的操作必须是HttpGet,提交后无效
2)2)Action返回的结果是JsonResult,而不是直接的布尔值
(7)自我验证
1)在模型中结合验证上下文和验证结果来提供验证
复制代码如下: public ienumerablevalidationresult validate(验证上下文validation result){ if(end date=start date){ yield return new validation result(' end time必须大于start time ');} }
10.最佳实践
(1)分层设计
1)多个项目
2)关注点分离
3)替代数据访问层
(2)存储库模式(业务层)
1)将添加、删除和修改数据(CRUD)的操作封装到存储库中
2)业务逻辑/数据验证封装在服务中
3)控制器调用责任和服务
(3)PRG模式(方法)
1)开机自检
2)重定向
3)获取
4)PRG模式用于确保数据修改只发生一次
(4)尽量减少视图中的代码量
1)视图中不包含数据处理的逻辑代码
2)避免在视图中包含大代码块
3)构建多个尝试/部分视图
4)使用正确的@Helper和@Function语法
(5)对魔弦说“再见”
1)ASPX模式
@视图数据['消息']
@ViewData['TotalCount']
2)剃刀模式
@模型。消息
@模型。总计数
3)尝试使用特定的模型,而不是使用视图数据/视图包
(6)DomainModel!视图模型
1)满足最小化视图模型的要求
1)有效验证
2)安全性高
3)高性能
2)使用一些映射工具进行双向映射填充
1)自动映射器、发光映射器、值注入器
2)自定义ORM-GeneraL point。ORM
3)使用特殊视图模型填充逻辑,轻松解决国际化/本地化
(7)使用新的AJAX助手
1)Web 1)中的德语appSettings。配置
添加键UnobtrusiveJavaScriptEnabled”值=“true”
2)jquery . include-视图中引用了ajax.js
3)在视图中调用AJAX助手
1)@Ajax。ActionLink('Home ',' Index ',new AJaxooptions { updateTargetId=' main ' })
2)a data-Ajax=' true ' data-Ajax-mode=' replace ' data-Ajax-update=' # content ' href='/' Home/a
(8)在视图中尽可能多地编写HTML代码
1)尽可能编写纯HTML代码
2)不要刻意定制HTMl等Helper。提交以便隐藏HTML
3)尽可能不要使用WebForm控件来呈现视图代码
(9)IIS Express 7.5
1)完整的网络服务器功能
1)SSL
2)网址重写
3)可以在本地测试系统服务器的配置
4)4)IIS 7的其他模板集合。X
2)轻量化
1)5M
2)不需要管理员帐户
3)高性能
11.性能优化的软实力
(1)了解HTTP、Cache、Ajax的基本知识
(2)能够分析和规划整个Web执行环境的架构
(3)可以设计合适的缓存策略
(4)可以根据网站表现进一步分析数据
12.努力优化性能
(1)熟悉MVC框架和核心原则。net/c #/ASP。网
(2)能够进一步妥善规划项目,做好关注点分离工作
(3)熟悉Profiling技术,能够分析各个环节的性能瓶颈
(4)可以针对各种环境优化代码,提高程序的执行性能
13.决定网络性能的关键因素
(1) Web性能优化基础——HTTP
1)http是无状态的
2)一个网页包含N个HTTP请求
(2)分析网页打开时的Http状态
1)提琴手
2)IE10开发人员工具
(3)客户端优化
1)减少1)HTTP请求的数量
2)下载使用的带宽
3)长度3)DNS查询
4)速度4)CSS显示
5)JavaScript调用速度
(4)服务器优化
1)IIS
-控制客户端
高速缓存控制
-控制服务器端
将对缓存进行计数(输出缓存)
提高数据库查询的速度
2)ASP。NET MVC
-呼叫性能改进
-适当的缓存策略
(5)[参见状态]
1)使用SessionState属性
控制控制器如何访问阶段状态数据(会话)
2)注意:会话关闭后,临时数据不能用于传输信息
(6)[输出缓存]
1)Html。动作和Html。渲染动作支持输出缓存
-@{Html。RenderAction('ActionName')}
-@Html。操作('操作名')
2)ChildAction最终支持OutputCache属性
-[仅限儿童操作]
-仅支持持续时间、变量自定义和变量参数
-无法使用缓存配置文件参数
(7)更改视图引擎的默认设置
1)删除冗余视图引擎以提高视图分辨率的速度
-视图引擎。引擎。清除();
-视图引擎。引擎。添加(新的RazorViewENgine());
2)您也可以通过这种方式更改加载视图的顺序
-默认情况下,WebFormViewEngine优先
-视图引擎。引擎。添加(新的WebformView engine());
(8)避免闯入空视图
1)Html。文本框(m=m .名称)
-传入null时将引发异常,但它将被try/catch丢弃
-public ActionResultInsert(){ 0
返回视图(新产品());
}
(9)关闭Web的调试模式。配置
1)编译调试='False' targetFramework='4.0' /
基本文章在这里。让我们在下面的文章中有一些深入的知识。让我们期待吧。