宝哥软件园

ASP.NET MVC总结的基础(2)

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

整理这张纸条,一次分享。关于基础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' /

基本文章在这里。让我们在下面的文章中有一些深入的知识。让我们期待吧。

更多资讯
游戏推荐
更多+