02.02.2018, Vladimír Klaus, navštíveno 1867x
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.
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: