我对MVC很新。我现在面临着路由问题。我的项目网址是/ account / Create。我可以访问控制器并为Create创建我的东西,但是 我需要访问/帐户控制器,因为我需要在该级别编写代码。
/ account / create - 我可以访问此级别的代码
/ account - 不知道如何访问此控制器
项目结构:
示例项目
我应该在以下代码中更改什么?
//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 :(得分: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
);
上面的 action =“Index”部分是定义帐户控制器上的默认方法,因此在这种情况下,/ account URL与/ account / index URL等效
我刚注意到你在问题中拼错了帐号,不确定这可能是你的问题;)
更新
不确定这是否是你所追求的,但如果你需要在/ Account级别编写代码,你可以在控制器的构造函数中执行此操作。
答案 1 :(得分:0)
除非您基本上自定义MVC,否则控制器对应于mvc中从Controller派生的类,并且操作对应于这些控制器上的方法。
当您说无法访问控制器/帐户时,您想要实现什么目标?
控制器只是Actions的容器,因此您需要指定一个Action。当然,如果未指定操作,您可以使用默认操作。默认情况下,指定上述路线。它被称为索引