【发布时间】:2017-02-15 17:51:30
【问题描述】:
我在下面的控制器中指定了一个路由,其中包含一个与动作重载匹配的参数。
public class OrganisationsController : Controller
{
[HttpGet]
[Route("organisations/{id}/employees")]
public ActionResult Employees(int id)
{
// Some code here
}
}
我正在尝试使用 @Html.ActionLink 在 Razor 视图中创建 URL 以匹配控制器上指定的路由,例如 localhost:55416/Organisations/2/Employees,但我无法使其正常工作。
我能得到的最接近的是localhost:55416/Organisations/Employees/2,因为路线错误,它不起作用,或者localhost:55416/Organisations/Employees?id=2,它实际上在组织控制器上的员工操作被击中时起作用,但它只是一个然后查询字符串否定了首先添加[Route("organisations/{id}/employees")] 路由的目的。
我在互联网上找到的所有示例和帖子都处理末尾的参数,例如[Route("organisations/employees/{id}")],而不是在控制器和操作之间。
我没有为尝试将自定义路由添加到RouteConfig 而烦恼,因为在我看来,URL 是根据控制器上指定的路由首先需要正确的起点,还是我错了?
有没有办法让我按照我希望的方式使用ActionLink 生成 URL,或者我需要另一种方式来执行此操作?
【问题讨论】:
-
你试过
@Html.ActionLink("myLink", "Employees","Organisations",new { id = 2 },null) -
@sam,嗨,是的,我有,当使用
@Html.ActionLink("Employees", "Employees", "Organisations", new { id = item.Id }, null)时,我得到了 localhost:55416/Organisations/Employees/2 URL。 -
你能提交你的
RouteConfig类吗? -
@sam 你的传奇,我有一个解决方案,有两个独立的项目,一个用于 MVC WebApp,一个用于 WebAPI,我现在看到我只在 WebAPI 的 RouteConfig.cs 中添加了
routes.MapMvcAttributeRoutes();也不适用于 MVC WebApp,这是我试图创建 URL 的地方。我添加了它,上面的 ActionLink 现在正在生成正确的 localhost:55416/organisations/2/employees url。
标签: asp.net-mvc razor asp.net-mvc-5 attributerouting