在vs2013中,选择“文件”-->“新建”-->"项目",找到mvc,选择Internet应用程序(默认),下面选择asspx,然后确定。
约定的目录结构
1.Models文件夹一般存放LINQ to SQL类或者ADO.NET Entity Data Model。
2.Views一般存放.aspx页面,.ascx控件及.master母版页。注意:对于每一个控制器,在views文件夹中都有一个与控制器名称相对应的目录。例如,存在一个控制器HomeController,那么在views文件夹中,就必须创建一个Home(控制器HomeController名称的前面部分)的目录。
3.Shared中可以存放母版页,css样式表等文件。
4.Controllers一般存放控制器组件
执行过程
构建模型(Model)
首先我们需要去官网下载一个数据库,NorthWind,https://www.microsoft.com/en-us/download/details.aspx?id=23654
然后安装,打开sql server,新建连接查询,将C:\SQL Server 2000 Sample Databases的instnwnd.sql里面的内容复制,粘贴到sql那边,执行,出现NorthWind数据库。
之后,选择“Model”文件夹,右击添加,新建项,选择ADO NET实体数据模型。
我们选择我们的Categories表,然后完成。
创建控制器
打开我们的HomeController,修改代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication1.Models;//MvcApplication1为工程名,NorthwindEntities使用 namespace MvcApplication1.Controllers { public class HomeController : Controller { NorthwindEntities NorthWind = new NorthwindEntities(); public ActionResult Index() { var model = NorthWind.Categories.ToList(); return View(model); } [AcceptVerbs(HttpVerbs.Get)] public ActionResult Edit(int id) { var model = NorthWind.Categories.First(c => c.CategoryID == id); return View(model); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(int id,FormCollection form) { var model = NorthWind.Categories.First(c => c.CategoryID == id); UpdateModel(model, new[] { "CategoryName", "Description" }); NorthWind.SaveChanges(); return RedirectToAction("Index"); } [AcceptVerbs(HttpVerbs.Get)] public ActionResult Details(int id) { var model = NorthWind.Categories.First(c => c.CategoryID == id); return View(model); } [AcceptVerbs(HttpVerbs.Get)] public ActionResult Create(){ Categories category=new Categories(); return View(category); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(int CategoryID, FormCollection form) { var model = NorthWind.Categories.FirstOrDefault(c => c.CategoryID == CategoryID); if (model == null) { Categories category = new Categories(); UpdateModel(category, new[] { "CategoryName", "Description" }); NorthWind.AddToCategories(category);//有错误点击它左下角的加号 NorthWind.SaveChanges(); return RedirectToAction("Index"); } else return RedirectToAction("Create"); } public ActionResult About() { return View(); } } }
创建视图
1.显示页面
删除默认的index,选择控制器HomeController中的Index()方法,然后单击鼠标右键,选择Add View
错误:传入字典的模型项的类型为“System.Collections.Generic.List`1[myConstr.ArticleInfo]”,但此字典需要类型“System.Collections.Generic.IEnumerable`1[DAL.Models.ArticleInfo]”的模型项。
将上面的支持模板改为List,控制器中传给view的数据类型与View中设置的model类型不一致导致
然后运行index.aspx就好了
同样的,edit也是一样,注意,将支持模块改为Edit.....(还不能点击)
URL路由
在Global.asax.cs的Application_Start()方法中设置URL路由
protected void Application_Start() { /* AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth();*/ RegisterRoutes(RouteTable.Routes); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute("Default","{controller}/{action}/{id}",new{Controller="Home",Action="Index",id="1"});//id必须要写,不然会报错 }
错误:System.Web.Mvc.ActionResult Edit(Int32)”的不可以为 null 的类型“System.Int32”的参数“id”,路由id不能为空
到此,增,改,显示都完成了,就是没有删除,因为这个表跟别的表关联,不能删除数据。
https://github.com/1126048156/mvc1.git