2013-03-27 225 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。当然,如果没有指定一个动作,你可以有一个默认的动作。这在默认情况下在上面的路线中指定。这就是所谓的索引