初识《MVC》
2016-01-15 16:41
351 查看
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显示出来。里面用到的知识点不少,一点点的积累吧!
相关文章推荐
- 我看过的
- 数据结构和抽象数据类型
- 瓦片地图黑线彻底解决
- 解决linux下网页页面解析问题
- MSSQL 各种连接-左外连接、右外连接、内连接、全连接
- Android studio 多渠道打包(超简洁版)
- 线程池的实现(c语言)
- Android设计模式之一个例子让你彻底明白工厂模式(Factory Pattern)
- Python: scikit-image canny 边缘检测
- 如何在本地配置域名和ip对应关系
- Android---3种方式限制EditView输入字数
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
- 燕十八------------缩略图与水印类
- Ubuntu再图形登录中以root的身份进入???
- sed使用整理
- Android Studio——setdoinput 作用
- Spring transaction事务之roll back回滚
- Hexo系列教程(一):hexo的简介
- javaweb中ajax跨域访问实例
- javascript 字典类型的使用