MVC原理
MVC的基本思想是为了解耦。包括模型-视图-控制器
Model(模型)表示应用程序核心(比如数据库记录列表),程序中处理应用程序数据逻辑部分。
View(视图)显示数据,程序中处理数据显示的部分。
Controller(控制器)处理输入,程序中处理用户交互的部分。
MVCviaC#控制器
什么是控制器,从上面的描述可知控制器其实是为了响应用户的操作请求。传统使用WebForm编程的同学都知道在每一个aspx都有一个aspx.cs文件,在MVC中Controller就代表了这个aspx.cs的功能。
为什么使用控制器呢?第一个原因,在编写webform代码中我们的编写可能存在一个aspx.cs文件中不仅有接受用户请求的邀请而且可能包含一些js的处理,这时这个aspx.cs文件就不满足“单一职责”原则。第二个原因,现在的很多项目都是按照分层分模块去做的,使用Controller控制器就可以降低在编写用户请求的时候修改了View层的代码。第三个原因,如果不严格分离层编写代码,那么将来的业务逻辑代码、javascript代码等将会到处都是不易管理和维护。为了解决这些问题,ASP.NET MVC控制器应运而生,我们可以将具体的业务实现代码放入到控制器中而javascript代码放入到视图中,这样实现了表示层和业务逻辑层的完全分离。
MVCviaC#模型
从界面获取的数据将被装备到指定的模型当中,我们先看看如何获取客户端数据。
ASP.NET MVC在服务器端获取数据的方式
1.使用Request对象获取数据。
Request对象是ASP.NET的内置对象,包含了客户端传递过来的所有数据,比如Cookie、QueryString等等
取值就如:String value = Request["name"];
2.使用Model-Binding获取数据。
Model-Binding将具体的Controller方法与环境(Http Server)分开,是的可以对Controller方法进行测试。
例如:
public ActionResult Login(string name,string password){
return View();
}
只需要客户端传递的数据时:name=张三&password=123.那么上面相应的参数的name=张三,password=123
MVCviaC#视图和视图模式
1.使用WebFormsView风格编写视图
WedFormsView写法风格上面看过于复杂,很想早期的ASP语法。这种方式编写文件时.aspx,.ascx
1.<%: [代码块] %>
用来输出一段经过HTML编码的数据。
输入:<%:String.Format(“<p>你好!</p>”)%>
结果:<p>你好</p>
2.<%=[代码块]%>
用来输出一段未经过HTML编码的数据。
输入:<%=String.Format(“<p>你好!</p>”)%>
结果:你好
3.<% [代码块]%>
在View上执行的一段代码。
输入:<%foreach(vars in collection) { %>
<li><%:s%></li>
<%}%>
结果:<li>..</li><li>…</li>………..
2.了解Razor风格编写视图的语法
Razor是一种简单的视图编写语法,后缀是.cshtml(C#).vbhtml(vb)
1.@[代码块]
输入:@String.Format(“<p>你好</p>”)
结果 :<p>你好</p>
2.@{[代码块]}
输入:@foreach(vars in collection)
{<li>@s</li>
}输出 :<li>….</li><li>…</li>….
MVCviaC#特性
1.MVC的Html和Ajax帮助器的用法
Html帮助器
WebForms可以通过拖控件的方式进行前端的开发,这样可以帮助我们省很多的开发工作量。ASP.NET MVC也吸取了WebForms的这种开发方式,并把一些常用的功能封装到HtmlHelper类中,可以在View中使用Html属性访问,常见的几个函数如下:
Html.Label(…) //相当于输出Label控件
Html.TextBox(..) //相当于输出TextBox控件
Html.DropDownList(…) //相当于输出DropDownList控件
Ajax帮助器
Ajax帮助器是为了能够简化Ajax操作而设计的,它的设计很像WebForms中存在的UpdatePanel控件,可以在View中使用Ajax属性访问,比较常用的方法如下:
Ajax.BeginForm(…)
Ajax.HyperLink(…)
2.了解ASP.NETMVC强类型视图的优势
强类型视图
我们讨论了在View与Controller之间使用ViewData字典进行数据传递,但这样存在一个相当大的问题,也就是如果是拼写错误,可能会得不到任何值不易在编译时发觉。
例如,我在Controller中设置了ViewData[“Name”]=“张三”,但我在View中却误写成ViewData[“Name1”]。这样,我们获取不到任何值。运行时也不报任何错误
使用强类型视图就好多了,可以避免上述这种问题,而且还可以使用ASP.NETMVC提供的诸多特性以及智能提示等等。那么什么是强类型视图呢?
强类型视图就是指,在View和Controller之间使用对象传输数据从而取代使用ViewData传值的方式。业界中,常常把这种传输对象叫做视图模型。可以使用View的Model属性访问视图模型。
这里只是MVC的简单学习,MVC开发模式是目前Web开发的主流,.NET的MVC具有很强的功能与处理,如果上面有些没有理解,请更贴共同讨论分享,共分享,同成长嘛