Triko zdarma Triko zdarma
Pouze tento týden až 80 % sleva na vývoj webů v PHP.
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"
Avatar
Adam Gajdečka:15.10.2018 9:45

Potřebuji vytvořit odkaz na hlavní stránku, do kontroleru Home action Index. Tento kontroler není v žádné Area, jinak na webu existují nějaké Area.
Když jsem na stránce v nějaké Area, tak nefunguje odkaz na Home Page, respektive mě to hází do Home kontroleru dané area.

V Core 2.0 to fungovalo takto:

@Url.Action("Index","Home", new { Area = "" })

, ale teď ve verzi Core 2.1 to nefunguje.

<a asp-action="Index" asp-controller="Home">Hlavní stránka</a>

@Url.Action("Index","Home", new { Area = "" })
@Url.Action("Index","Home")
Editováno 15.10.2018 9:46
 
Odpovědět 15.10.2018 9:45
Avatar
Adam Gajdečka:15.10.2018 9:46

Budu tedy rád za vaše rady. Díky

Editováno 15.10.2018 9:47
 
Nahoru Odpovědět 15.10.2018 9:46
Avatar
Adam Gajdečka:15.10.2018 9:54
app.UseMvc(routes =>
            {
                routes.MapRoute(
                  name: "areas",
                  template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
                );
            });

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

Dodávám ještě tento kód.

Mimochodem jsem také zjistil, že na Hlavní stránce (mimo Area), tak mi nefungují odkazy do jiných Area.

 
Nahoru Odpovědět 15.10.2018 9:54
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Adam Gajdečka
Martin Petrovaj:15.10.2018 12:51

Nemôžem to teraz nijako overiť, ale nefungovalo by toto?

@Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})

V prípade, že tvoj Home Controller nie je v žiadnej Area, tak uvedieš Area = "" (príp. niekde som tuším zazrel aj "root").

Pre viac odpovedí sa skús pozrieť sem, odtiaľ som to vytiahol aj ja: https://stackoverflow.com/…-action-link

Viac ti možno pomôžem, až budem večer doma a budem to môcť vyskúšať sám.

Nahoru Odpovědět 15.10.2018 12:51
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovídá na Martin Petrovaj
Adam Gajdečka:15.10.2018 12:59

díky za odpověď. @Html.ActionLink vytváří celý HTML odkaz, mi stačí jen pouhý odkaz. Ovšem vyzkoušel jsem to, ale stejně to nefunguje. A podle by to fungovat mělo, stejně jako moje příklady výše.

Nemám chybu někde spíše v tom Startup.cs? Celý jsem nahrál zde https://www.itnetwork.cz/…lighter/1109

 
Nahoru Odpovědět 15.10.2018 12:59
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Adam Gajdečka
Martin Petrovaj:15.10.2018 13:10

Tiež si myslím, že link vytváraš správne a route template vyzerá tiež ok. Nemôže byť problém v dvoch volaniach UseMvc? Bežne sa routy robia v jednom volaní UseMvc, akurát v parametri (lambde) viackrát použiješ MapRoute. Ale to už teraz len strieľam, z hlavy tam inú chybu nevidím.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 15.10.2018 13:10
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovídá na Martin Petrovaj
Adam Gajdečka:15.10.2018 13:13

Díky moc, to je tak chyba. Já tu druhou UseMVc route kopíroval, tak jsem si to neuvědomil. Funguje to! Bylo to tím :-D

 
Nahoru Odpovědět 15.10.2018 13:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.