Bezpečné načítání hodnot z query stringu podruhé

V komentáři k mému článku Vytváření vlastních parametrů podruhé - "bezpečný" query string parametr nabídl uživatel Meap své vlastní řešení: třídu QueryStringParser. Jeho řešení je pro jisté scénáře užitečné a zároveň technologicky zajímavé, a autor laskavě souhlasil s jeho zveřejněním na ASP Network.

Idea tohoto řešení je jednoduchá: Deklarujete si třídu, která reprezentuje parametry dané stránky. Pomocí atributu Arguments definujete, zda je daný parametr povinný, případně jakou má defaultní hodnotu:

protected class QueryStringArguments
{
    [Argument(ArgumentType.NonRequired, ParamName="StringParameter", DefaultValue="Defaultní hodnota nepovinného parametru")]
    public string StringParameter;
    [Argument(ArgumentType.Required, ParamName = "IntParameter")]
    public int IntParameter;
}

Ve shora uvedené třídě jsem deklaroval dva parametry. Jeden je celočíselný a povinný, druhý je řetězcový, nepovinný s defaultní hodnotou.

V samotné stránce pak zavoláte metodu QueryStringParser.ParseArguments, která se pokusí naplnit tuto třídu hodnotami z query stringu. Pokud se jí to povede, získáte silně typovou sadu nastavení. Pokud ne (protože chybí povinné parametry, případně nesouhlasí typy), dojde k chybě.

Toto řešení velice elegantním způsobem řeší načítání parametrů procedurálně, tedy z vašeho kódu.

  • Altairis
  • Nemesis
  • Microsoft MVP
  • IIS
  • ASP.NET