MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
一、MVC简介
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
二、代码小例子
创建一个MVC的应用程序,在应用程序里面,分别创建Dog类,HomeController、还有一个Index视图。Dog类代码如下所示
public class Dog
{
public int ID { get; set; }
public string Name { get; set; }
public override string ToString()
{
return "ID=" + this.ID + ",Name=" + this.Name;
}
}
HomeController代码
public class HomeController : Controller
{
List<Models.Dog> list = null;
#region 初始化数据集合 +InitData()
/// <summary>
/// 初始化数据集合
/// </summary>
public List<Models.Dog> InitData()
{
list = new List<Models.Dog>(){
new Dog(){ID=1,Name="哇哈哈!!"},//属性初始化器
new Dog(){ID=2,Name="哇哈哈2!"},
new Dog(){ID=3,Name="哇哈哈3!"}
};
return list;
}
#endregion
public ActionResult Index()
{
//准备一个HTML代码的容器
System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);
//创建一个数据集合并且获取数据
List<Models.Dog> list = InitData();
//遍历集合 生成HTML代码 ,存入sbHTML
list.ForEach(d =>
{
sbHtml.AppendLine("<div>" + d.ToString() + "<div/>");
});
//使用ViewBag传输数据给同名Index.cshtml 视图
//ViewBag是一个dynamic类型集合,可以动态添加任意名称的属性和值
ViewBag.HtmlStr = sbHtml.ToString();
//加载同名视图 index.cshtml
return View();
}
}
视图中的代码
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
@*相当于把 Action 方法中 保存的内容放在此处输出*@
@Html.Raw(ViewBag.HtmlStr)
</body>
</html>
输出效果
刚刚学习MVC,简单的了解一下Model View Controller之间的关系,简单的理解了在View中获取Controller数据的,我觉得上面代码的精华部分在于创建了一个HTML代码的容器,这个容器将从后台传送过来的数据装进去,然后在传送给View显示出来。里面用到的知识点不少,一点点的积累吧!