URL Routing   zodpovězená otázka

ASP.NET WebForms

Dobré poledne.

Jelikož vyšlo nové VS2010 a procházím si novinky, dostal jsem se i k URL Routingu, kde jsem narazil na drobný problém. Dostat se v kódu na hodnoty parametrů není problém, ale nemůžu přijít na to, jak se dostat přímo na daný parametr a v podmínce zjistit, jestli v URL ten parametr je, nebo není. Jako příklad uvedu jednoduchý kód:

if (string.IsNullOrEmpty(Request.QueryString["DokumentaceID"]))
{
   //Provede se nějaký požadovaný kód
}

A potřebuju to nějak přepsat, aby to fungovalo i s URL Routingem:

if (string.IsNullOrEmpty(RouteData.....))
{
   //Provede se nějaký požadovaný kód
}

Předem díky za radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

" Dostat se v kódu na hodnoty parametrů není problém, ale nemůžu přijít na to, jak se dostat přímo na daný parametr "

To mi moc nedává smysl. Vám jde o to, jak přistupovat k parametrům routingu a nikoliv k parametrům query stringu?

To je:

PageData.RouteValues.Values("jméno")
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jde mi o to, jak otestovat, jestli v URL je zadaný parametr nebo nikoli(v prvotní podmínce mě nezajímá co je v parametru ale jestli ten parametr vůbec v URL je). Mám upravenou URL která vypadá takto: www.xxx.cz/Dokumentace/1 a odpovídá to www.xxx.cz/Dokumentace.aspx?DokumentaceI...

Jak zjistit, zda je v URL zadaný parametr(v našem případě 1 v upravené URL pomocí Routingu), která odpovídá parametru DokumentaceID=1 nebo zda tam ten parametr není?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je potřeba odlišovat - QueryString je něco jiného než Route parameters, QueryString jsou parametry za otazníkem, Route jsou ty z route.

if (string.IsNullOrEmpty(Page.RouteData.Values["searchterm"])) ...;

To by mělo být ono.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tohle, co jste napsal byla první věc, která mě napadla. Všechno sice funguje, jak má, pokud je parametr v URL zadaný. Ale jakmile parametr není v URL, tak se na jeho hodnotu Values nemůžu dostat a dostanu vyjímku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak dáte Try..Catch a v Try za vytiahnutím hodnoty do premennej dáte to, čo chcete spraviť ak hodnota existuje a do Catch dáte ten typ výnimky, aký to vyhadzuje a to, čo chcete spraviť ak hodnota neexistuje

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Odchytávání vyjímky mi přijde jen jako mezní řešení. Pokud jde testovat, jestli URL obsahuje parametr, tak proč to řešit vyjímkou ? Teda pokud to jde...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A nemá ta kolekce něco jako ContainsKey nebo Contains? Tím se zjistí, zda-li tam taková položka je, nebo není.

Dělat to přes výjimky je samozřejmě čuňačinka.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Má to ContainsKey, teraz som sa pozrel do Object Browseru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě mě napadá, co kdybych tento problém řešil jednoduchou podmínkou:


RouteData.Values["DokumentaceID"] == null ? 
    //Udělá něco, když je hodnota parametru null : 
    //Provede něco, kde je potřeba parametr

Sice tak netestuju, jestli v URL je parametr ale jen jeho obsah.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takto vám to akurát tak vyhodí výnimku.

    if (RouteData.Values.ContainsKey("DokumentaceID"))
    {
        //Hodnota existuje
    }
    else
    {
        //Hodnota neexistuje
    }

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jojo, po tom co pan Herceg zmínil uvedenou ContainsKey tak jsem to tak vyřešil, ale předtím jsem to obešel tak, jak jsem psal. Jinak ContainsKey řeší můj problém takže díky za informaci.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback