MVC
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
-
Model(模型)表示应用程序核心(比如数据库记录列表)。
-
View(视图)显示数据(数据库记录)。
-
Controller(控制器)处理输入(写入数据库记录)。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
框架模式可以用下图表示:
下面一段代码用MVC简单写的数据库的增删改查(aspx):
Controllers
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using DATAModels; namespace MvcApplication1.Controllers { public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { ViewBag.data = new DATA().select(); return View(); } public ActionResult xiugai(string id)//这里的id对应路由中的id不能乱改 { student s = new DATA().select(id); ViewBag.data = s;//携带数据显示到视图中 return View(); } public ActionResult Update(string sno, string sname,string ssex,DateTime sbirthday, string class1) { new DATA().Update(sno,sname,ssex,sbirthday,class1); return RedirectToAction("Index");//跳转到Index视图 } public ActionResult zengjia() { return View();//增加视图 } public ActionResult ADD(string sno, string sname, string ssex, DateTime sbirthday, string class1) { try { new DATA().Insert(sno, sname, ssex, sbirthday, class1); return RedirectToAction("Index"); } catch (Exception) { return RedirectToAction("chucuo", "Home");//跳转到Home控制器下的chucuo动作 } } public ActionResult shanchu(string id) { try { new DATA().delete(id); return RedirectToAction("Index"); } catch (Exception) { return RedirectToAction("chucuo","Home"); } } public ActionResult chucuo() { return View(); } public ActionResult tiaozhuan() { return RedirectToAction("Index"); } public ActionResult jingzhunchaxun(string id) { ViewBag.data=new DATA().lianjie(id); ViewBag.datac = new DATA().jingzhuncha(id); return View(); } } }
Models
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace DATAModels { public class DATA { private DataLianXiSQLDataContext Context = new DataLianXiSQLDataContext(); public List<student> select()//查询学生信息 { List<student> list = Context.student.ToList(); return list; } public student select(string sno) { int sn=int.Parse(sno); var s = Context.student.Where(a=>a.Sno==sn);//按Sno查询学生信息 if (s.Count()>0) { return s.First();//返回序列中的第一个元素 } return null; } public void Update(string sno, string sname, string ssex,DateTime sbirthday,string class1) { var query = Context.student.Where(p => p.Sno == int.Parse(sno)); if (query.Count() > 0) { student data = query.First(); data.Sname = sname; data.Ssex = ssex; data.Sbirthday = sbirthday; data.Class = class1; } Context.SubmitChanges();//修改 } public void Insert(string sno, string sname, string ssex, DateTime sbirthday, string class1) { int sn = int.Parse(sno); student s = new student(); s.Sno = sn; s.Sname = sname; s.Ssex = ssex; s.Sbirthday = sbirthday; s.Class = class1; Context.student.InsertOnSubmit(s);//插入 Context.SubmitChanges(); } public void delete(string sno) { var s = Context.student.Where(p=>p.Sno==int.Parse(sno)); if (s!=null) { student stu = s.First(); Context.student.DeleteOnSubmit(stu);//删除 Context.SubmitChanges(); } } public List<score> lianjie(string sno) { List<score> list=new List<score>(); var query = Context.score.Where(p=>p.Sno==int.Parse(sno)); if (query!=null) { foreach (var item in query) { list.Add(item); } } return list; } public List<course> jingzhuncha(string sno) { List<score> list = new List<score>(); var query = Context.score.Where(p => p.Sno == int.Parse(sno)); if (query != null) { foreach (var item in query) { list.Add(item); } } List<course> lico = new List<course>(); for (int i = 0; i < list.Count; i++) { var cn = Context.course.Where(c=>c.Cno==list[i].Cno); if (cn!=null) { lico.Add(cn.First()); } } return lico; } } }
Views:
Index
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <%@ Import Namespace="DATAModels" %> <!DOCTYPE html> <html> <head runat="server"> <meta name="viewport" content="width=device-width" /> <title>Index</title> <style> .tab { width:100%; column-rule-color:#141313; column-rule-style:solid; text-align:center; } .tr1 { background-color:#fff; } .tr2 { background-color:#c3b7b7; } .tr { background-color:#ffffcc; } </style> </head> <body> <div> <table class="tab" border="1"> <tr class="tr"> <td>学号</td> <td>姓名</td> <td>性别</td> <td>生日</td> <td>班级</td> <td></td> <td></td> </tr> <% List<student> list = ViewBag.data as List<student>; int i = 0; foreach (student s in list) { if(i%2==0) { %> <tr class="tr1"> <td><%=s.Sno %></td> <td><a href="Home/jingzhunchaxun/<%=s.Sno %>"><%=s.Sname %></a></td> <td><%=s.Ssex %></td> <td><%=s.Sbirthday.Value.ToLongDateString().ToString() %></td> <td><%=s.Class %></td> <td> <a href="/Home/xiugai/<%=s.Sno %>">修改</a> </td> <td> <a onclick="return confirm('确认要删除<%=s.Sname.ToString() %>吗?')" href="Home/shanchu/<%=s.Sno %>">删除</a> </td> </tr> <%}else { %> <tr class="tr2"> <td><%=s.Sno %></td> <td><a href="Home/jingzhunchaxun/<%=s.Sno %>"><%=s.Sname %></a></td> <td><%=s.Ssex %></td> <td><%=s.Sbirthday.Value.ToLongDateString().ToString() %></td> <td><%=s.Class %></td> <td> <a href="/Home/xiugai/<%=s.Sno %>">修改</a> </td> <td> <a onclick="return confirm('确认要删除<%=s.Sname.ToString() %>吗?')" href="Home/shanchu/<%=s.Sno %>">删除</a> </td> </tr> <%} %> <% i++; } %> </table> <div> <form id="f2" name="f2" action="Home/zengjia" method="post"> <input type="submit" value="增加" /> </form> </div> </div> </body> </html>
zengjia
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <%@ Import Namespace="DATAModels" %> <!DOCTYPE html> <html> <head runat="server"> <meta name="viewport" content="width=device-width" /> <title>zengjia</title> </head> <body> <div> <form id="f1" name="f1" method="post" action="/Home/ADD"> <ul> <li><input type="text" name="sno" /></li> <li><input type="text" name="sname" /></li> <li><input type="text" name="ssex" /></li> <li><input type="text" name="sbirthday" /></li> <li><input type="text" name="class1" /></li> <li><input type="submit" value="更新" /></li> </ul> </form> <form id="f2" name="f2" action="/Home/tiaozhuan" method="post"> <input type="submit" value="回到主页" /> </form> </div> </body> </html>
xiugai
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <%@ Import Namespace="DATAModels" %> <!DOCTYPE html> <html> <head runat="server"> <meta name="viewport" content="width=device-width" /> <title>xiugai</title> </head> <body> <div> <form id="f1" name="f1" method="post" action="/Home/Update"> <ul> <%student s=ViewBag.data as student; if(s!=null) { %> <li><input readonly="readonly" type="text" name="sno" value="<%=s.Sno %>"/></li> <li><input type="text" name="sname" value="<%=s.Sname %>" /></li> <li><input type="text" name="ssex" value="<%=s.Ssex %>" /></li> <li><input type="text" name="sbirthday" value="<%=s.Sbirthday %>" /></li> <li><input type="text" name="class1" value="<%=s.Class %>" /></li> <li><input type="submit" value="更新" /></li> <%} %> </ul> </form> <form id="f2" name="f2" action="/Home/tiaozhuan" method="post"> <input type="submit" value="回到主页" /> </form> </div> </body> </html>
chucuo
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <!DOCTYPE html> <html> <head runat="server"> <meta name="viewport" content="width=device-width" /> <title>chucuo</title> </head> <body> <div> <h1>出错了!</h1> <form action="Home/tiaozhuan" method="post"> <input type="submit" value="回到主页" /> </form> </div> </body> </html>