Странное поведение между помощниками тегов и атрибутом Route в asp.net 5 MVC6

Когда я использую asp-controller и asp-action в теге <a> для другого действия, отличного от текущего, в представлении, вызываемом методом контроллера с атрибутом [Route], сгенерированная ссылка имеет пустой атрибут href.

В контроллере:

public class ForumController : Controller
{
    [Route("[action]/{sectionId:int}")]
    public async Task<IActionResult> ShowSection(int sectionId)
    {
        //some code
    }
}

В представлении:

<a asp-controller="Forum" asp-action="Index">Index</a>
<a asp-controller="Forum" asp-action="ShowSection" asp-route-sectionId="@Model.ParentSection.Id">@Model.ParentSection.Name</a>

Сгенерированный HTML:

<a href="">Index</a>
<a href="/ShowSection/1">Général</a>

Как видите, первая ссылка сгенерирована некорректно. Все ссылки, которые нацелены на другое действие, отличное от текущего действия, генерируются с пустым тегом href.

Когда я удаляю атрибут [Route] действия ShowSection:

<a href="/Forum">Index</a>
<a href="/Forum/ShowSection?sectionId=1">Général</a>

Как видите, ссылки генерируются корректно.

Как я могу исправить это, сохранив атрибуты [Route] (или с альтернативой)?


person Gilles V.    schedule 12.05.2016    source источник
comment
Покажите свое Index() действие вместе с регистрацией маршрутизации в вашем Startup.cs   -  person haim770    schedule 16.05.2016


Ответы (1)


Наконец-то я нашел его (комментарий @haim770 помог):

Я добавил атрибут Route ко всем своим контроллерам и действиям, и теперь он работает.

person Gilles V.    schedule 16.05.2016