2016-05-12 12 views
5

Kiedy używam asp-controller i asp-action w tagu <a> dla innej akcji niż bieżąca, w widoku wywołanym przez metodę kontrolera z [Route] atrybut wygenerowany link ma pusty atrybut href.Dziwne zachowanie między tagami-pomocnikami a atrybutem trasy w asp.net 5 MVC6

w kontrolerze:

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

w widoku:

<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> 

Generated html:

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

As widać, pierwszy link nie jest generowany poprawnie. Wszystkie linki kierujące do innej akcji niż akcja kursowa są generowane z pustym znacznikiem href.

Kiedy usunąć [trasy] atrybut działania ShowSection:

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

Jak widać, linki są poprawnie wygenerowany.

Jak mogę to naprawić, zachowując moje atrybuty [Route] (lub z alternatywą)?

+0

Pokaż swoje działanie 'Index()' wraz z rejestracją routingu w twoim 'Startup.cs' – haim770

Odpowiedz

0

końcu znalazłem go (@ haim770 komentarz pomógł):

Dodałem atrybut trasy do wszystkich moich kontrolerów & działania i teraz działa.