Webfrom VS MVC
WebForm:
请求过程:客户端向服务器发出请求→服务器IIS接收请求,并交给Framework→①Framework创建index.aspx的页面类对象;②可能访问数据库;③并处理业务;④准备要输出的html数据→最后将逻辑处理后的处理交给客户端
注意:Framework创建的是一个页面类对象,它的业务处理等都是在它的后置类对象中完成,它的界面显示也是跟它的后置类对象有着相当强的耦合关系的。实例如下:
aspx中的代码:
<span style="font-size:18px;"><%@ PageLanguage="C#" AutoEventWireup="true"CodeBehind="Demo.aspx.cs" Inherits="WebformDemo1.Demo"%> <!DOCTYPEhtml> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <metahttp-equiv="Content-Type" content="text/html;charset=utf-8"/> <title></title> </head> <body> <form id="form1"runat="server"> <div> <asp:Label ID="Label1"runat="server" Text=""></asp:Label> </div> </form> </body> </html></span>
后置类中的代码:
<span style="font-size:18px;">namespaceWebformDemo1 { public partial class Demo :System.Web.UI.Page { protected void Page_Load(object sender,EventArgs e) { string str ="我是John"; this.Label1.Text=str; } } }</span>
从上面的代码我们可以很清晰的知道,如果美工现在想将显示该数据的Label控件换成一个p,那么它就很难保证后置代码的不受影响。然而现实中页面的改变又往往比业务逻辑的改变要频繁的多,那么我们该如何处理呢??现在假设:我们将上面的实例进行如下的更改,通过如下的方式来向前台传递数据。实例如下:
aspx中的代码:
<span style="font-size:18px;"><%@ PageLanguage="C#" AutoEventWireup="true"CodeBehind="Demo.aspx.cs" Inherits="WebformDemo1.Demo"%> <!DOCTYPEhtml> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <metahttp-equiv="Content-Type" content="text/html;charset=utf-8"/> <title></title> </head> <body> <form id="form1"runat="server"> <div> <%--<asp:LabelID="Label1" runat="server"Text=""></asp:Label>--%> <p><%: this.DbData%></p> </div> </form> </body> </html></span>
后置类中的代码:
<span style="font-size:18px;">namespaceWebformDemo1 { public partial class Demo :System.Web.UI.Page { public string DbData { get; set; } protected void Page_Load(object sender,EventArgs e) { string str ="我是John"; DbData = str; //this.Label1.Text=str; } } } </span>
MVC:
请求过程:客户端向服务器发出请求→①服务器IIS接收请求,并交给Framework→Framework根据路由配置,解析URL;②Framework创建blog类的对象;③并调用index方法;④可能访问数据库;⑤并处理业务;⑥将要显示的数据交给相应的View→最后View决定数据显示的界面、样式。
注意:Controller用于创建相应的类,并调用与之对应的View层中的相应的方法。这样的话就将原来的耦合在一起的类和方法给解开了。这样的View层只管界面的显示了。
总结:对于MVC的学习还在进行中,现在还只是刚刚开始,更多的体会还需要在项目中去体会。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。