时间飞逝,转眼间暑假就过去了、过完年初八老师说要我们回学校帮他做他所接的项目,现在想想,真不如说他想趁这个时间培养我们,因为,从这几天明显的感觉到,他在给我们做分析的时间早已经把这些工作做完了。
这次做的是老师从某市建设局的一个网上审核,评估和申请项目的网上平台。这个建设局倒是挺给力,不仅提供了舒适的办公条件,还提供了丰富的午餐。真是心里万分感激。这次的项目,由于我们老师是搞.NET,所以我们这次的项目主要是.NET来做。由于以前主要是以java的学习为主,对.NET真正了解的也不算太多,所以前三天几乎就是一个学习。
我们这次项目是采用ASP.NET的最新技术MVC3.0来做,下面,根据我这几天的学习,来总结一下MVC3.0:mvc3.0主要有model,view,controller三层结构组成,在model中主要是有实体类和数据缓存容器(自己起的名字,哈哈),有时在model中也添加一些业务处理逻辑。。甚至有时候还对model进行分层三层,view主要是页面的显示和页面的布局,而controller主要是负责页面的跳转,一般不做其他工作。在mvc3.0添加了新的视图模型Razor,这个模型大大的减小了程序员的代码量。用少量的代码可以写出更多的功能,还有一个这次项目中很重要的知识点就是EntityFramework,ADO.NETEntityFramework是微软以ADO.NET为基础所发展出来的对象关系对应(O/RMapping)解决方案,早期被称为ObjectSpace,,EntityFramework主要分三种种方式进行操作:code-First,model——first,db—first,
1.这三种方式,code-first主要是写好实体类,vs2010可以利用code-firstEntityFrameWork插件自动生成出数据库,但是这样生成数据库的缺点是实在是不好控制数据库,对以后的可扩展性不好。
2.db—first,这种方式主要是先建好数据库,然后根据数据库,添加ADO.NET实体数据模型,自动生成实体类和数据缓存容器。还有一些数据CRUD一些列操作的方法。
3.最后一个,model-first主要是对实体.edmx文件进行操作,主要是在图形化界面中对实体之间的关系进行操作。。。设计好实体之间的关系之后,根据这个关系,生成实体类和数据库
今天主要实现的事一个页面之间的个人工作经验的增删改查:controller中的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using ConstructionMis.Dll.Bll; using ConstructionMis.Dll.Entity; namespace ConstructionMis.Web.Controllers { public class WorkExpController : Controller { // // GET: /WorkExp/ WorkExpBll expBll = new WorkExpBll(); public ActionResult insert(int personId) {//点?击÷添?加ó按恪?钮¥ ViewBag.editIndex = -1; List<WorkExperience> list = expBll.select(personId); return View("Index",list); } public ActionResult edit(int workId) {//点?击÷编括?辑-按恪?钮¥ int pId = expBll.getPId(workId); ViewBag.personId = pId; List<WorkExperience> list = expBll.select(pId); ViewBag.editIndex = list.FindIndex(t => t.Id == workId); return View("Index",list); } public ActionResult delete(int id) {//点?击÷删?除y按恪?钮¥ expBll.delete(id); List<WorkExperience> list = expBll.select(id); return View("Index",list); } public ActionResult Index(int id) { List<WorkExperience> list = expBll.select(id); return View(list); } public ActionResult Save(WorkExperience exp) { int id = exp.Id; if (id > 0) { expBll.update(exp); } else { expBll.insert(exp); } return View("index"); } } } View页面的代码: @model IEnumerable<ConstructionMis.Dll.Entity.WorkExperience> <link href="@Url.Content("~/css/simple.css")" rel="stylesheet" type="text/css" /> <link href="@Url.Content("~/css/cupertino/jquery-ui-1.8.12.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.ui.datepicker-zh-CN.js")" type="text/javascript"></script> <script type="text/javascript"> $(function () { $('#StartTime').datepicker(); $('#EndTime').datepicker(); $('table.grid tr:odd').addClass('odd'); }); //$(function ) </script> <table class="grid"> <tr> <th colspan="2"> 操ù作痢? </th> <th> 工¤作痢?单蹋?位? </th> <th> 职°务? </th> <th> 起e始?时骸?间? </th> </tr> @{ int i = 0; string css = "even"; } @foreach (var inf in Model) { if (i % 2 == 0) { css = "even"; } else { css = "odd"; } <tr class='@css'> <td> @Html.ActionLink(" 编括? 辑- ", "", new { id=inf.Id }) </td> <td> @Html.ActionLink(" 删? 除y ", "Delete", new { id = inf.Id }) </td> <td> @inf.Company </td> <td> @inf.Duty </td> <td>@inf.StartTime.ToString().Substring(0, @inf.StartTime.ToString().IndexOf(" "))-@inf.EndTime.ToString().Substring(0, @inf.EndTime.ToString().IndexOf(" ")) </td> </tr> } </table> @{ string display = "none"; ConstructionMis.Dll.Entity. WorkExperience m=new ConstructionMis.Dll.Entity.WorkExperience(); if (ViewBag.editIndex != null) { display ="block"; if(ViewBag.editIndex>=0) { int i = ViewBag.editIndex; m= Model[i]; } } } <div id="editorInfo" style="display:@display"> @using (Html.BeginForm("","")) { <fieldset style="width:450px"> <legend>编括?辑-详ê情é</legend> 工¤作痢?单蹋?位?:<input type="text" id="Company" value="@m.Company" /> 职°务?:<input type="text" id="Duty" value="@m.Duty"/><br /> 起e始?时骸?间?:<input type="text" id="StartTime" value="@m.StartTime" /> 至á <input type="text" id="EndTime" value="@m.EndTime" /><br /><br /> <input type="submit" value="提?交?" style="margin-left:100px;" /> <input type="reset" value="取?消?" /> </fieldset> } </div>