初创一个mvc

   在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


猜你喜欢

转载自blog.csdn.net/x1596638165/article/details/80052910