前言
最近要面试了,虽然在项目里学到了很多东西,但是那只能是实战,实战上升到理论或是表达方面,到底还是有一些欠缺,所以还是得回来学习这些理论知识。
MVC概述
MVC的全称是Model View Controller,也就是Model(模型)-View(视图)-Controller(控制器)的缩写,将业务逻辑、数据、界面显示的代码分离,业务逻辑聚集到一个部件里面,在改进和个性化定制界面几用户交互的同时,不需要重新编写业务逻辑,使得同一个程序可以使用不同的表现形式(感觉和建造者模式很像)。使得职责单一,控制更加灵活。MVC用于映射、传统的输入、处理和输出功能在一个逻辑图形化用户界面的结构中。
Model,也就是业务模型,是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据,它表示应用程序核心。
View,也就是指用户界面,它是应用程序中处理数据显示的部分。通常视图是依据模型数据创建。
Controller,也就是控制器,,它是应用程序中处理用户交互的部分,控制器负责从视图读取数据,控制用户输入,并向模型发送数据
MVC中的数据流动和三层架构一样,先从上往下流,然后再从下 往上返回。如下图,先从客户端发送请求到达controller(其实所有请求都是到达相应的Action方法里),然后数据到达controller,controller做三件事:1、处理用户请求;2、调用BLL层,处理业务逻辑;3、把数据返回给view显示。之后controller把处理后的数据传送给model,model再把数据传送给数据库,数据库拿到数据后一层一层往上返回,最后又view展示数据,由aspx页面转换成HTML发送给客户端展示。
实例展示
1、首先创建Model
public class UserInfo
{
public string txtName { get; set; }
[RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",ErrorMessage="*邮箱格式")]
public string txtPwd { get; set; }
}
2、 然后创建UserInfo控制器
public class UserInfoController : Controller
{
public ActionResult ShowUserInfo()
{
ViewData["User"] = new UserInfo()
{
txtName = "shit",
txtPwd = "123"
};
ViewData.Model = new UserInfo()
{
txtName="shit222",
txtPwd="1231222"
};
return View("Show");
}
}
3、之后在ShowUserInfo添加视图
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.UserInfo>" %>
<%@ Import Namespace="MvcApplication1.Models" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>ShowUserInfo</title>
</head>
<body>
<div>
<% var user = (UserInfo)ViewData["User"]; %>
<p>
<%=user.txtName %>
</p>
<% =ViewData.Model.txtName %>
<%=Model.txtName %>
</div>
</body>
</html>
4、最后运行,显示结果
总结
总结下来,发现自己对MVC的理解更深一步了,欠下的总是要还的,现在就是一步一步慢慢还了。