2010-03-17 87 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