在ASP.NET MVC 3中为控制器设置默认操作(而不是索引)
我有一个名为Dashboard
的控制器,其中包含3个操作: Summary
, Details
和Status
,其中任何一个都不带ID或任何其他参数。 我希望URL /Dashboard
路由到Dashboard
控制器的Summary
操作,如/Dashboard/Summary
那样,但我无法找出添加路由的正确方法。 在Global.asax.cs
,我有以下内容:
routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults ); routes.MapRoute( "/Dashboard", "Dashboard", new { controller = "Dashboard", action = "Summary" } );
对于第二部分,我也尝试过:
routes.MapRoute( "/Dashboard", "{controller}", new { controller = "Dashboard", action = "Summary" } );
和
routes.MapRoute( "/Dashboard", "{controller}", new { action = "Summary" } );
但是在尝试访问/Dashboard
时我总是得到404。 我很确定我错过了关于MapRoute
参数格式的一些内容,但我不知道它是什么…
将您的仪表板路线移动到默认路线前:
routes.MapRoute( "Dashboard", "Dashboard/{action}", new { controller = "Dashboard", action = "Summary" } ); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults );
路线的顺序改变了一切。 另外,请注意我对Dashboard
路线所做的更改。 第一个参数是路径的名称。 第二个是URL,它匹配以Dashboard
开头的URL,并允许在Dashboard
控制器中执行其他操作。 如您所见,它将默认为“ Summary
操作。
您需要最后声明“默认”全部捕获路由。
这为任何Controller asp.net设置默认操作:
routes.MapRoute("Dashboard", "{controller}/{action}", defaults: new { controller = "Dashboard", action = "Summary" });
- ASP.net MVC 4 WebApi – 测试MIME多部分内容
- 如何返回更具体的HTTP代码(如401.X)
- 果园cms路由问题
- MVC自定义身份validation,授权和角色实现
- MVC4 webapi中的反序列化/模型绑定不适用于数组
- 无法加载文件或程序集’System.IdentityModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其依赖项之一
- 为什么我们的项目需要接口层/抽象类?
- 将datetime2数据类型转换为日期时间数据类型会导致超出范围的值 – 不使用DateTime2
- 具有键’GenderID’的ViewData项的类型为’System.Int32’,但必须是’IEnumerable ‘类型