2017-02-15 22 views
0

У меня есть контроллер ниже с указанным маршрутом, который содержит параметры, соответствующие перегрузке действия.Создать URL-адрес в Razor View для атрибута Маршрут, содержащий параметры

public class OrganisationsController : Controller 
{ 
    [HttpGet] 
    [Route("organisations/{id}/employees")] 
    public ActionResult Employees(int id) 
    { 
     // Some code here 
    } 
} 

Я пытаюсь создать URL в Razor View с помощью @Html.ActionLink соответствовать маршруту, указанному на контроллере, например localhost:55416/Organisations/2/Employees, но я не смог заставить его работать.

Ближайшим, что я смог получить, является localhost:55416/Organisations/Employees/2, который не работает в качестве неправильного маршрута, или localhost:55416/Organisations/Employees?id=2, который фактически работает как действие сотрудников в контроллере Организации, но тогда это всего лишь строка запроса, тогда что отрицает цель добавления маршрута [Route("organisations/{id}/employees")] в первую очередь.

Все примеры и сообщения, которые я смог найти в interwebs, касаются параметра, находящегося в конце, например [Route("organisations/employees/{id}")], а не между контроллером и действием.

Я не беспокоился, пытаясь добавить собственный маршрут к RouteConfig, поскольку, на мой взгляд, URL-адрес является начальной точкой, которая должна быть правильной в первую очередь в соответствии с Маршрутом, указанным на контроллере, или я здесь не прав?

Есть ли способ создать URL-адрес так, как я хочу, чтобы он использовал ActionLink, или есть ли другой способ, который мне нужно сделать?

+1

Вы пробовали '@ Html.ActionLink ("MyLink", "Сотрудники", "Организации", новый {ID = 2}, NULL)' –

+0

@ Сэм, привет, да я, при использовании ' @ Html.ActionLink («Сотрудники», «Сотрудники», «Организации», новый {id = item.Id}, null) 'Я получаю URL-адрес localhost: 55416/Организации/Сотрудники/2. – user3706626

+0

Не могли бы вы представить свой класс 'RouteConfig'? –

ответ

0

Кредит должен пойти к Сэму, ActionLink, который он предоставил, был прав, причина, по которой он не срабатывал, когда я пытался это сделать, потому что я не добавлял строку routes.MapMvcAttributesRoutes(); в проект RouteConfig.cs, в котором я пытался для создания URL-адреса, после его добавления ожидается, что URL-адрес localhost:55416/Organisations/2/Employees будет сгенерирован ссылкой действия @Html.ActionLink("Employees", "Employees", "Organisations", new { id = item.Id }, null).

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapMvcAttributeRoutes(); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^