学习Asp.net MVC-牛刀小试(1)
在上一篇的文章中,我们大概理解MVC 的模式后,我们应该是从基础入手:
1.我们先理解一下程序的入口
使用了URL重写. ASP.NET中叫做UrlRouting,对应的程序集是System.Web.Routing, 打开项目的Global.asax.cs文件, 会找到我们建立的页面重写规则
publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default",//Routename"{controller}/{action}/{id}",//URLwithparametersnew{controller="Users",action="Index",id=UrlParameter.Optional}//Parameterdefaults);}protectedvoidApplication_Start(){AreaRegistration.RegisterAllAreas();System.Data.Entity.Database.SetInitializer(newMvcApplication1.Models.UsersInitializer());RegisterGlobalFilters(GlobalFilters.Filters);RegisterRoutes(RouteTable.Routes);}
2.查找 Controller
在Controllers文件夹下我们可以找到UsersController.cs, 这里使用了一个约定, 就是如果URL中获取到的Controller名字是Users, 则他的Controller类名就是UsersController. 在URL中的名字后加上”Controller”.
实例中Controller都放在Controllers文件夹, 所以我们可以按照命名约定很容易就可以找到HomeController类
3.查找 Action
一个Controller可以包含多个Action, MVC模式中Controller角色的具体实现逻辑都是在Action中的.
因为我们的Action是Index, 所以自然就要调用Index()方法.这里将"Webcome to ASP.NET MVC!",
privateUsersDbContextdb=newUsersDbContext();////GET:/Users/publicViewResultIndex(){returnView(db.Users.ToList());}////GET:/Users/Details/5publicViewResultDetails(intid){Usersusers=db.Users.Find(id);returnView(users);}////GET:/Users/CreatepublicActionResultCreate(){returnView();}////POST:/Users/Create[HttpPost]publicActionResultCreate(Usersusers){if(ModelState.IsValid){db.Users.Add(users);db.SaveChanges();returnRedirectToAction("Index");}returnView(users);}////GET:/Users/Edit/5publicActionResultEdit(intid){Usersusers=db.Users.Find(id);returnView(users);}////POST:/Users/Edit/5[HttpPost]publicActionResultEdit(Usersusers){if(ModelState.IsValid){db.Entry(users).State=EntityState.Modified;db.SaveChanges();returnRedirectToAction("Index");}returnView(users);}////GET:/Users/Delete/5publicActionResultDelete(intid){Usersusers=db.Users.Find(id);returnView(users);}////POST:/Users/Delete/5[HttpPost,ActionName("Delete")]publicActionResultDeleteConfirmed(intid){Usersusers=db.Users.Find(id);db.Users.Remove(users);db.SaveChanges();returnRedirectToAction("Index");}protectedoverridevoidDispose(booldisposing){db.Dispose();base.Dispose(disposing);}
4.查找view 视图
View方法中可以带一个名字, 这个名字就是View的名字.如果把index改成Edit,那么访问/Users/Edit就会跳转到Edit页!
5. 页面展示
接下来ViewEngine即页面引擎会将aspx中的HTML部分以及上面的数据部分和在一起返回给浏览器.
关于View对象我注意到此页面是继承自System.Web.Mvc.ViewPage而不是直接继承自System.Web.UI.Page, 而这个ViewData对象就是ViewPage中的一个属性. 这里的ViewData一定是页面级别的,当页面编译完毕这个对象就会被注销(HTTP是无状态的协议,每次请求其实都是生成一个新的ViewPage对象).
@modelIEnumerable<MvcApplication1.Models.Users>@{ViewBag.Title="Index";}<h3>Index</h3><p>@Html.ActionLink("CreateNew","Create")</p><table><tr><th>UserID</th><th>UserName</th><th>Password</th><th>RegTime</th><th>IsTest</th><th>IsEnable</th><th></th></tr>@foreach(variteminModel){<tr><td>@Html.DisplayFor(modelItem=>item.UserID)</td><td>@Html.DisplayFor(modelItem=>item.UserName)</td><td>@Html.DisplayFor(modelItem=>item.Password)</td><td>@Html.DisplayFor(modelItem=>item.RegTime)</td><td>@Html.DisplayFor(modelItem=>item.IsTest)</td><td>@Html.DisplayFor(modelItem=>item.IsEnable)</td><td>@Html.ActionLink("Edit","Edit",new{id=item.ID})|@Html.ActionLink("Details","Details",new{id=item.ID})|@Html.ActionLink("Delete","Delete",new{id=item.ID})</td></tr>}</table>效果图:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。