02.02.2018, Vladimír Klaus, navštíveno 1867x

ASP.NET/C#

V tomto článku je uvedeno krátké shrnutí několika funkcí pro práci s "webovými cestami", které docela často používám. Možností a postupů je samozřejmě daleko více (viz odkaz na konci článku), takže pokud vás zajímá zjištění třeba portu apod., tak se určitě podívejte.

Základní funkce na práci s webovými cestami v ASP.NET

Root webu

Celý odkaz na root webu. Povšimněte si, že hodnota nekončí lomítkem a pokud budete připojovat další údaje, je třeba si to ohlídat.

@Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)

Výsledek pro tento web běžící lokálně:

http://localhost:50107

Výsledek pro tento web běžící na serveru:

http://www.vladimirklaus.cz

Lokální složka webu

Je to složka , kterou můžete potřebovat třeba pro provádění souborových operací lokálně.

@HttpContext.Current.Server.MapPath("~")

Výsledek pro tento web běžící lokálně:

D:\Projekty\AUDREYsoftware\VladimirKlaus.cz\WebVK-2016\

Výsledek pro tento web běžící na serveru:

D:\Websites\7aa950dcb3\www\

Aktuální stránka

Zde je třeba si uvědomit, že stránka může být zadána i bez (cshtml) přípony, a taky takový výsledek pak funkce vrátí.

@HttpContext.Current.Request.Url.AbsoluteUri

Výsledek pro tento web a stránku /CZ/test-page.cshtml běžící lokálně:

http://localhost:50107/CZ/test-page.cshtml

Výsledek pro tento web a stránku /CZ/test-page.cshtml běžící na serveru:

http://www.vladimirklaus.cz/CZ/test-page.cshtml

A ještě stránka jako taková, tedy test-page

Path.GetFileNameWithoutExtension(HttpContext.Current.Request.Url.AbsoluteUri)

Stránka relativně a bez parametrů

Vrátí relativní stránku, takže se neliší mezi lokálním a serverovým použitím.

@HttpContext.Current.Request.Url.AbsolutePath

Výsledek pro tento web běžící lokálně - http://localhost:50107/CZ/test-page?hodnota=123:

/CZ/test-page

Výsledek pro tento web běžící na serveru - http://www.vladimirklaus.cz/CZ/test-page?hodnota=123:

/CZ/test-page

Stránka relativně, ale včetně parametrů

Vrátí relativní stránku včetně parametrů, takže se neliší mezi lokálním a serverovým použitím.

@HttpContext.Current.Request.Url.PathAndQuery

Výsledek pro tento web běžící lokálně - http://localhost:50107/CZ/test-page?hodnota=123:

/CZ/test-page?hodnota=123

Výsledek pro tento web běžící na serveru - http://www.vladimirklaus.cz/CZ/test-page?hodnota=123:

/CZ/test-page?hodnota=123

Převod virtuální cesty na lokální cestu

Pokud máte nějakou cestu zadanou virtuálně a potřebujete zjistit lokální cestu. I zde platí, že přípona u cshtml stránek nemusí být uvedena.

@Server.MapPath("/CZ/kontakt")

Výsledek pro tento web běžící lokálně:

D:\Projekty\AUDREYsoftware\VladimirKlaus.cz\WebVK-2016\CZ\kontakt

Výsledek pro tento web běžící na serveru:

D:\Websites\7aa950dcb3\www\CZ\kontakt

Závěr

Pro další studium doporučuji níže uvedený odkaz a další dokumentaci. Možností je samozřejmě hodně, ne vždy všechny postupy vedou k požadovaným výsledkům a navíc jsou si některé metody podobné a dochází k chybnému použití. Proto si funkce dobře vyzkoušejte, především jak fungují lokálně a jak na ostrém serveru, případě v situaci, kdy root webu nemusí být totožný s rootem serveru.

Další zdroje: