您的位置:首页 > 编程语言 > ASP

Asp.net MVC 学习心得

2011-03-29 11:25 176 查看
    asp.net mvc 学习中,第一个要理解的是 Controller 与View之间的关系。与普通的asp.net 工程不一样,浏览器中的Url访问的不再是一个个实际存在的页面,而是Controller中的一个个Action。Controller获得Http请求之后,进行处理,完毕之后将数据交换给视图来显示。

 

    因此在IIS6与IIS5中进行部署的时候,必须要添加一个通配符的HttpHandler,否则IIS无法处理MVC的Web请求;

 

    MVC最开始版本的视图引擎依然支持CodeBehind,居然还能放Server Control到页面中,其实这已经违背了MVC的设计初衷,所以在asp.net mvc2中将这个干掉了。

 

    这样的设计有利有弊,好处就是输出的HTML代码更干净,摆脱了一大顿asp.net输出的额外代码,例如ViewState,很长的Control ID之类。使得输出的HTML代码Size会大大减少,使得页面在传输与显示时更为高效。当然这也是MVC模式必须做到的,Model-Controller-View分离的原则。

 

    缺点就是没有了那些一拖一拉就能完成的服务器端控件,也没了可视化的WebForm设计器,需要完全手工的输入代码来完成视图的设计,还要自行设计数据交换及其处理细节。尤其是之前只有Aspx这一个视图引擎时,编写视图时一个很累的工作,Razor的引入,使得视图的设计轻松愉快了很多。作为一个从CGI开始学习动态Web编程的人来说,纯手工的HTML代码输出倒难不倒我,反而是我最期望得到的。

 

  在MVC中如何设计整个系统,例如说数据访问、业务逻辑之类。在Asp.net官方网站上给出过几个例子。

 

    第一个版本的例子,采用的Linq To SQL作为Entity类,用于访问数据库,在此之上使用Repository模式进行封装,Repository之上定义了一个Service服务层用于处理业务逻辑。但是这个设计中,没有很好的给出Model该如何设计。

 

   直到asp.net mvc3,我觉得才给出了一个比较好的设计,数据访问采用Entity Framework,Entity直接作为Repository,在此之上定义Service层来包含业务逻辑,视图Model作为Controller与View之间的数据传输格式。在定义Model的时候,使用Data Annotation来定义其中的属性,然后就可以很方便的使用HtmlHelper来生成表单,并且进行数据合法性验证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息