• 初识 ASP.NET 3.5 MVC 开发


    在学习被停滞了N久以后,今天终于下定决心要继续了。过了太久堕落的生活也开始厌倦了。继续开始我的MVC学习之路。

    目录机构:

    models 文件夹: 模型组件    还可以存放有关数据访问操作的一些类、对象的操作的定义等。

    Views 文件夹: 视图组件。可以存放的文件类型包括.aspx页面,.ascx控件以及.master母版页等。

    Shared文件夹:视图组件中的公用部分。可以存放 母版页、CSS样式等文件。

    Controllers文件夹:控制器组件。

    在Web.Config中注册了 UrlRoutingModule类,用于解析URL路由。

    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

    在Global.asax文件中的Application_Start()方法中设置了URL路由,以及相关的路由逻辑。

            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    "Default",                                              // Route name
                    "{controller}/{action}/{id}",                           // URL with parameters
                    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
                );
    
            }
    
            protected void Application_Start()
            {
                RegisterRoutes(RouteTable.Routes);
            }
        }

    执行过程:

    当执行基于ASP.NET 3.5 MVC 框架的MVCApplication网站时,根据浏览器中的URL地址,该URL地址首先被传递到URLRoutingModule 模块,该模块解析该URL地址,然后选择相关的URL路由,并得到兑现的IHttpContext对象来处理该URL路由。在默认情况下,该IHttpContext对象就是MvcHandler 对象。通过MvcHandler对象,选择相关的控制器来处理用户的请求。

    执行步骤:

    在基于ASP.NET 3.5 MVC 框架的MVCApplication网站中,每一个请求的页面都被映射到相应的控制器中的相关方法,控制器负责将制定的内容返回到浏览器中。多个页面可以被映射到同一个控制器中的不同方法。

    在ASP.NET 3.5 MVC框架中,页面到控制器的映射是通过路径表(Route Table)而实现的,对于每一个应用程序有一个路径表。路径表通过RouteTable.Routes 属性表示。

                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    "Default",                                              // Route name
                    "{controller}/{action}/{id}",                           // URL with parameters
                    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
                );

    当请求一个基于ASP.NET 3.5 MVC 框架的网站页面时,在Web.config配置文件中所配置是UrlRoutingModule模块解析该URL,并获得相关的RouteData对象,然后创建HttpHandler的实例化对象MvcHandler。

    在执行MvcHandler时,调用几种的ProcessRequest()方法,执行该ProcessRequest()方法,从而创建一个控制器的实例化对象。

    在执行Controller时,调用其中的Execute()方法,在该方法内部通过反射原理实现对指定其他方法的调用,在调用的方法中会执行View()方法,从而将指定页面的内容返回到浏览器中~

    一个增删改查的例子:

    HomeController:

       [HandleError]
        public class HomeController : Controller
        {
            NorthwindEntities northwind = new NorthwindEntities();
    
            public ActionResult Index()
            {
                var model = northwind.Categories.ToList();
    
                return View(model);
            }
    
            public ActionResult About()
            {
                return View();
            }
    
            [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 from)
            {
                var model = northwind.Categories.First(c => c.CategoryID == id);
                UpdateModel(model,new [] {"CategoryName","Description"});
    
                northwind.SaveChanges();
    
                return RedirectToAction("index");
            }
    
            [AcceptVerbs(HttpVerbs.Get)]
            public  ActionResult Detail(int id)
            {
                var model = northwind.Categories.First(c => c.CategoryID == id);
    
                return View(model);
            }
    
             [AcceptVerbs(HttpVerbs.Get)]
            public  ActionResult Create()
             {
                 Categories categories = new Categories();
    
                 return View(categories);
             }
    
            public ActionResult Create(int CategoryID, FormCollection form)
            {
                var model = northwind.Categories.FirstOrDefault(c => c.CategoryID == CategoryID);
    
                if (model==null)
                {
                    Categories categories = new Categories();
                    UpdateModel(categories, new[] {"CategoryName", "Description"});
    
                    northwind.AddToCategories(categories);
                    northwind.SaveChanges();
    
                    return RedirectToAction("Index");
                }
                else
                {
                    return RedirectToAction("Create");
                }
            }
    
        }

    感觉刚刚看了点皮毛还是很简单的,不过以后在实用上面估计还是要多多下功夫的。加油吧。继续学习中……………………………………………………

  • 相关阅读:
    android界面横屏和竖屏的切换
    google 提供webrtc 的实例使用 turnserver的方式
    如何使官方提供的AppRTCDemo 运行在自己搭建的server(官方提供的apprtc)上(官方的server源码)
    android在全屏下第一次触摸屏幕没有触发事件
    ubuntu常用命令记录集
    python 一个包中的文件调用另外一个包文件 实例
    python-插入排序
    phantomjs submit click
    python socket.error: [Errno 10054] 解决方法
    python-快速排序,两种方法→易理解
  • 原文地址:https://www.cnblogs.com/dupeng0811/p/1574974.html
Copyright © 2020-2023  润新知