Ja lubię pomysł abstrakcji ich jako właściwości. Na przykład:
public int age {
get
{
if (Request.QueryString["Age"] == null)
return 0;
else
return int.Parse(Request.QueryString["Age"]);
}
}
Można dodać więcej walidację jeśli chciał. Ale w ten sposób lubię owijać wszystkie moje zmienne łańcucha zapytania.
EDYCJA: --- Również jako kolejny plakat wskazał, że musisz utworzyć te właściwości na każdej stronie. Moja odpowiedź brzmi: nie, nie. Możesz utworzyć te właściwości w jednej klasie, którą możesz nazwać "QueryStrings" lub coś podobnego. Następnie można instancję tej klasy w każdej stronie, na której chcesz uzyskać dostęp do ciągów zapytań, to możesz po prostu zrobić coś jak
var queryStrings = new QueryStrings();
var age = queryStrings.age;
ten sposób można upakować wszystkie logiki dostępu i obsługi każdego typu zmiennej zapytania w jednej możliwej do utrzymania lokalizacji.
EDIT2: --- EDIT2: --- A ponieważ jest to instancja klasy, można również użyć iniekcji zależności, aby wstrzyknąć klasę QueryStrings w każdym miejscu, w którym ją używasz. StructureMap dobrze sobie z tym radzi. Umożliwia to również makiety klasy QueryStrings i wstrzykiwanie jej, jeśli chcesz przeprowadzić automatyczne testy jednostkowe. O wiele łatwiej jest to udowodnić niż obiekt Request ASP.Net.
Dodatkową zaletą jest to, że mówi przyszłym programistom dokładnie to, czego można oczekiwać od ciągu zapytania, gdy po raz pierwszy usiądzie z kodem. –
Tak, dziękuję, że to zauważyłeś. To zdecydowanie jest intencja. – 7wp
+1 - świetny sposób na poradzenie sobie z nim – nailitdown