Я склонен нравится идея абстрагирование их как свойства. Например:
public int age {
get
{
if (Request.QueryString["Age"] == null)
return 0;
else
return int.Parse(Request.QueryString["Age"]);
}
}
Вы могли бы добавить еще проверку, если вы хотите. Но я, как правило, люблю обматывать все мои переменные строки запроса таким образом.
EDIT: --- Также как другой плакат указал, что вы должны создавать эти свойства на каждой странице. Мой ответ - нет. Вы можете создать эти свойства в одном классе, который вы можете назвать «QueryStrings» или что-то еще. Тогда вы можете создать экземпляр этого класса на каждой странице, где вы хотите получить доступ к строкам запроса, то вы можете просто сделать что-то вроде
var queryStrings = new QueryStrings();
var age = queryStrings.age;
Таким образом, вы можете инкапсулировать всю логику для доступа и обработки каждого типа переменного запроса в одном обслуживаемом месте.
EDIT2: --- И поскольку это экземпляр класса, вы также можете использовать инъекцию зависимостей для инъекции класса QueryStrings в любом месте, где вы его используете. StructureMap хорошо справляется с этим. Это также позволяет вам макетировать класс QueryStrings и вводить это, если вы хотите выполнить автоматическое модульное тестирование. Это намного проще обмануть, чем объект Request ASP.Net.
Добавленный бонус здесь заключается в том, что он сообщает будущим разработчикам, что именно ожидать от строки запроса, когда они сначала садятся с вашим кодом. –
Да, спасибо, что заметили это. Это определенно намерение. – 7wp
+1 - отличный способ справиться с этим – nailitdown