在MVC的ActionName属性中斜杠

时间:2016-05-18 12:41:19

标签: html asp.net-mvc-3 url

ASP MVC中的ActionName属性是否可以使用斜杠?

e.g。我想要一条路径

MyController/MyAction1
MyController/MyAction2/A
MyController/MyAction2/B
MyController/MyAction3

这样做的原因是它模仿了用户使用的导航。但是,如果我尝试将以下内容添加到MyController,那么它无效。

[ActionName("MyAction2/A")]
public ActionResults A() {...}

显然没有属性,它也不会起作用。

我已尝试将RouteConfig.cs更改为

routes.MapRoute(
    name: "MyController",
    url: "MyController/MyAction2/{action}",
    defaults: new { controller = "MyController", action = "Index" }
);

但是这会影响所有MyController路径。如何在操作名称中获得斜杠,或者让路由配置'覆盖'只有当动作是MyAction2时才会进场?

1 个答案:

答案 0 :(得分:0)

使用Route注释可以在MVC 5中轻松完成此操作。Enable MVC 5 Routing

博客示例:

[Route(“books/lang/{lang=en}”)]
    public ActionResult ViewByLanguage(string lang)
    {
        return View(“OneBook”, GetBooksByLanguage(lang));
    }