[英]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.