2016-05-12 5 views
5

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

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

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> 

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

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

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

Как вы можете видеть, ссылки правильно генерируется.

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

+0

Показать действие 'Index()' вместе с регистрацией маршрутизации в 'Startup.cs' – haim770

ответ

0

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

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