在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