2010-03-17 88 views
3

我尝试了ASP.NET MVC,但是在阅读了一个巨大的教程之后,我有点困惑。我了解控制器如何将URL路由到动作,但主页如何工作?主页是否自己的控制器(例如“主页”)没有任何操作?这听起来是正确的,但是如何在没有Actions的情况下实现功能(没有操作意味着没有方法调用View Engine)?ASP.NET MVC中的主页

换句话说,我的问题是这样的:如何实现主页(根据控制器和视图)?您能否提供样品代码

回答

7

“首页”无非是任意Action更具体Controller返回一定View

要设置“主页”,网页,或更好的措辞,默认页面,则需要更改路由在Global.asax.cs文件的信息:

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     AreaRegistration.RegisterAllAreas(); 

     routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "NotHome", action = "NotIndex", id = "" } // Parameter defaults 
     ); 

公告路线定义:

 routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "NotHome", action = "NotIndex", id = "" } // Parameter defaults 
     ); 

这路由是一个“全部通过”路由,这意味着它将采取任何URL并将其分解为特定的控制器和操作和标识。如果没有或路由的一个定义,它会使用默认值:

new { controller = "NotHome", action = "NotIndex", id = "" } 

这是说“如果有人访问我的应用程序,但没有指定控制器或动作,我会重定向到我的NotHome控制器的动作NotIndex“。我故意将“Not”表示“Default.aspx”,“Index.html”的命名约定不适用于MVC路由。

3

主页通常等同于默认控制器上的默认操作/视图。

所以,你会创建,例如,与Index动作和相应的视图HomeController,那么在你的路线映射你会创建一个默认的,包罗万象的路线是这样的:

routes.MapRoute(
    "Default",            
    "{controller}/{action}/{id}",       
    new { controller = "Home", action = "Index", id = "" }); 
0

这取决于你的意思是“主页”。如果您的意思是当您转到http://www.yoursite.com(没有页面或控制器名称)时看到的页面,那么这就是索引控制器,它与任何其他控件一样工作,除非您在URL中看不到控制器的名称。

+0

如何创建索引控制器?它需要有一个行动? – 2010-03-17 23:39:37

+0

对不起,我的意思是说索引行动。任何控制器都可以有一个索引动作,该动作在路由中默认配置为该控制器的“主目录”。 – 2010-03-18 13:29:26