繁体   English   中英

如何在ASP.NET MVC中具有不带参数名称的自定义路由?

[英]How to have a custom route without parameter names in ASP.NET MVC?

我有以下路线可以到达我的方法:

[HttpGet]
[Route("Company/Employees/{name}")]
public ActionResult Details(string name)

我想通过发出请求来访问具有“ John”的名称属性的员工

Company/Employees/John

但是现在,该路线仅在输入以下内容时有效:

Company/Employees?name=John

我怎样才能解决这个问题?

编辑:

这是我的路线配置(在区域内)

context.MapRoute(
            "Company_default",
            "Company/{controller}/{action}/{id}",
            new { controller = "Employees", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "MySite.Areas.Company.Controllers" }
        );

就像我已经说过的,您的默认路由与自定义的Contoller路由具有相同的结构。 因为{id} param是可选的

如果要使用路由,则应在默认路由之前在RouteConfig中定义自定义路由,并摆脱控制器上的Route Attribute:

context.MapRoute(
            "DetailsCustom",
            "Company/Employees/{name}",
            new { controller = "Employees", action = "Details"},
            namespaces: new[] { "MySite.Areas.Company.Controllers" }
        );

在其他路线之前添加此路线:

context.MapRoute(
        "Company_default",
        "Company/{controller}/{id}",
        new { controller = "Employees", action = "Index", id =    UrlParameter.Optional },
        namespaces: new[] { "MySite.Areas.Company.Controllers" }
    );

因为您上一个正在选择“ John”作为“ action”参数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM