代码改变世界

MVC (M-V-C启动程序调用关系)

2015-02-05 11:16  ko绝缘体  阅读(1718)  评论(0编辑  收藏  举报

      在网上有很多mvc程序启动,调用之间的关系与顺序。而且还有很多很不错的网站。推荐一个

     http://www.cnblogs.com/QLeelulu/archive/2008/09/30/1302462.html

但是那些都说的比较理论,对于一些第一天开始学mvc的朋友来说,可能看起来感觉好像懂了很多,但是用起来的时候就感觉有问题,还经常遇到http 404问题。

我也摸索了一下,终于算理解跟会实际应用。以下我按实际操作来讲,不说那些太理论的东西。

      mvc的调用顺序:C => V =>M;这个顺序网上也有一些例子证明过给读者是这样的一个顺序,我这里也推荐一个

       http://www.cnblogs.com/powertoolsteam/archive/2012/11/02/2751015.html

       http://www.cnblogs.com/powertoolsteam/archive/2012/11/06/2756711.html

       http://www.cnblogs.com/powertoolsteam/archive/2012/12/17/2821495.html ;这3篇文章就能好好的证明这个,而且很简单。都是同一个作者写。

     

      说完顺序了,接着就之间说路由。很多人刚刚开学mvc都会问,那我怎么样知道程序去调用哪个控制器里面的那个方法去启动那个视图?这个答案就在路由配置

 routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}/{id}", // 带有参数的 URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
            );//controller="Home" 代表去启动控制器里面的HomeController.cs类
           //action = "Index", 代表去启动控制器HomeController.cs里面的Index()方法
          
View Code

到这里很多人都以为程序就可以正常启动。其实不一定。很多人调用的视图V,不一定跟控制器里面的启动方法Index同名。如果不同名就会报404错误。其实这是因为没有控制器C没有找到默认启动视图V。
如果不想启动默认同名的视图,只需要修改Index()里面的return View();

 public ActionResult Index()
        {
            //return View("../User/Login");
            return View("/Views/User/Login.cshtml");
        }
View Code

里面有两种写法,注意这两种写法的区别就行。到这里,程序就可以正常启动。视图view出现在大家面前。