最近了解到ITOO里面用到了好多的框架,比如MVC,比如EF,比如WCF,师哥师姐知识分享的时候就感觉自己对这些名词特别的困惑。所以就趁着最近的空余,小小的研究了一下MVC,现在来总结一下!
(一)
MVC中的M是指业务模型,V是指用户界面,C则是控制器。
M:Model:模型负责和数据库进行交互
V:View:视图负责展示数据
C:Controller:控制器负责处理用户请求Request,调用BLL,处理业务。
他们三者和客户端的关系,咱们可以用一个图表示:
具体一点就是:
MVC其实是用来让数据逻辑和数据显示完全的分离来设计的。
视图是用户看到并与之交互的界面,在这里面HTML扮演者重要的角色。
模型表示企业数据和业务规则,模型和数据格式无关,这样也就保证了一个模型可以为多个视图提供数据,减少了代码的重复性。
控制器接受用户输入并调用模型和视图去完成用户的请求。它本身不输出任何东西和做任何处理,它只是用来接受请求,并决定用哪个视图或者模型去处理。
(二)
MVC里面最重要的我认为就是视图:因为只有保证用户和界面良好的交互这个软件设计的才算是科学合理的,所以咱们说一下在视图里面用到的一个技术:Htmlhelper。
MVC为我们提供了一些方便生成html控件代码的方法,把这些方法封装到一个类中,这个类就叫做HtmlHelper
例如:HtmlHelper中的ActionLink方法:
<p class="site-title">@Html.ActionLink("大家好", "Index", "Home")</p>
这是一个生成a标签 超链接的htmlHelper , 那看下他生成的html源文件: <p class="site-title"><a href="/">大家好</a></p>
@Html.ActionLink("这是一个连接", "Index",null, new { id="link1" })
生成HTML源文件为:
<a href="/" id="link1">这是一个连接</a>
除了这个ActionLink方法外,HtmlHelper还有:
1、BeginForm:标记窗体的开头并连接到呈现该窗体的操作方法。
@using(Html.BeginForm("index","home",FormMethod.Post)){
}
<form action="/home/index" method="post"></form>
2、CheckBox:呈现复选框
@Html.CheckBox("CHK1",true)
生成HTML为:
<input checked="checked" id="CHK1" name="CHK1" type="checkbox" value="true" /><input name="CHK1" type="hidden" value="false" />
3、TextArea:呈现文本区域
@Html.TextArea("input5", 你好, 3, 9,null)
生成HTML为:
<textarea cols="9" id="input5" name="input5" rows="3">你好</textarea>
4、TextBox:呈现文本框
@Html.TextBox("input1")
生成HTML为:
<input id="input1" name="input1" type="text" value="" />
5、DropDownList:呈现下拉列表
6、Hidden:在窗体中嵌入未呈现的信息以供用户查看
7、ListBox:呈现列表框
8、Password:呈现用于输入密码的文本框
9、RadioButton:呈现单选按钮
除了这些封装好的东西,我们还可以扩展HtmlHelper类,它的扩展原理是:MVC通过在System.Web.Mvc.Html命名空间中提供的7个静态类来扩展了HtmlHelper类,主要用于实现不同的控件。它们分别是: FormExtensions类, InputExtensions类LinkExtensions类、SelectExtensions类、TextAreaExtensions类。至于怎么扩展我没有深究,这里只是做一个导读,以后学到了再认真总结!
在视图使用HtmlHelper类的好处是:如果我们在页面开发时使用自身提供的服务器控件,那么服务器空间会把数据保存在ViewState中,然后在请求中来回传递数据,这样会导致页面加载比较慢,如果我们用MVC的HtmlHelper类的话,就会减少这种问题!
小总:
这里只是做一个总结,关于MVC还有许多没有涉及到的知识,等学的更深一点再来总结吧!