我的方法有以下路线:
[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" }
);
答案 0 :(得分:2)
正如我已经说过的,您的默认路线与您的自定义控制器路线具有相同的风险。 Becouse {id}
param 可选。
如果你想使用你的路线,你应该在你的默认路线之前在RouteConfig中定义自定义路线,并在控制器上摆脱你的Route
属性:
context.MapRoute(
"DetailsCustom",
"Company/Employees/{name}",
new { controller = "Employees", action = "Details"},
namespaces: new[] { "MySite.Areas.Company.Controllers" }
);
答案 1 :(得分:0)
在您的其他路线之前添加:
context.MapRoute(
"Company_default",
"Company/{controller}/{id}",
new { controller = "Employees", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MySite.Areas.Company.Controllers" }
);
因为你的前一个正在接受" John"作为"动作"参数