2013-03-27 223 views
0

我對MVC相當陌生。我現在面臨路由問題。我的項目URL是/ account/Create。我可以訪問控制器,併爲創建做我的東西,但 我需要訪問/帳戶控制器,因爲我需要編寫該級別的代碼。MVC路由訪問路徑

/帳號/創建 - 我可以訪問代碼這個水平
/帳戶 - 不知道如何訪問此控制器

項目Stucture:
示例項目

  • 的Controler
  • 模型
  • 查看

我應該在下面的代碼中改變什麼?

//global.asax.cs 
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 = UrlParameter.Optional } //Parameter defaults 
    ); 
} 
+0

不知道你想實現什麼 – 2013-03-27 01:28:15

+0

聽起來你沒有任何要求會導致你改變'global.asax'中的默認路由。你已經有一個帳戶控制器?做一個全球性的查找字符串'class AccountController' – 2013-03-27 02:35:28

+1

實際上你想要什麼?你不能只訪問控制器。你必須傳遞像controller =「Account」,action =「someaction」這樣的動作方法。 – Duk 2013-03-27 05:26:52

回答

0

/account/create在賬戶控制器存取代碼。 Create必須是帳戶控制器上的方法(除非您修改默認路由)。您可以通過/account/method URL訪問您在帳戶控制器上定義的任何公開方法。根據沿途你貼出來,去/賬戶URL會調用賬戶控制器指數方法:

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

行動=「指數」以上部分是定義該帳戶控制器上的默認方法是什麼,所以要去/帳戶URL是在這種情況下/帳號/索引網址

我只注意到你拼寫帳戶錯的問題,不知道這可能是你的問題等同;)


更新

不確定這是否是您要的,但如果您需要在/帳戶級別編寫代碼,則可以在控制器的構造函數中執行此操作。

0

除非您基本上自定義MVC,否則控制器對應於mvc中從Controller派生的類,並且動作與這些控制器上的方法相對應。

當你說你無法訪問控制器/帳戶時,你想達到什麼目的?

控制器只是Actions的容器,因此您需要指定一個Action。當然,如果沒有指定一個動作,你可以有一個默認的動作。這在默認情況下在上面的路線中指定。這就是所謂的索引