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.