Próbuję zbudować bardzo, bardzo prostą „mikro-aplikację internetową”, która, jak podejrzewam, zainteresuje kilku użytkowników Stack Overflow, jeśli kiedykolwiek to zrobię. Hostuję go w mojej witrynie C # in Depth, która jest waniliowym ASP.NET 3.5 (tj. Nie MVC).
Przepływ jest bardzo prosty:
- Jeśli użytkownik wejdzie do aplikacji z adresem URL, który nie określa wszystkich parametrów (lub jeśli którykolwiek z nich jest nieprawidłowy), chcę po prostu wyświetlić kontrolki wprowadzania danych przez użytkownika. (Są tylko dwa.)
- Jeżeli użytkownik wprowadzi aplikację z adresem URL, który robi wszystkie wymagane parametry, chcę wyświetlić wyniki i formantów wejściowych (dzięki czemu mogą one zmieniać parametry)
Oto moje narzucone przeze mnie wymagania (połączenie projektu i realizacji):
- Chcę, aby zgłoszenie korzystało z funkcji GET, a nie POST, głównie po to, aby użytkownicy mogli łatwo dodać stronę do zakładek.
- I nie chcą URL skończyć patrząc głupie po złożeniu, z obcych kawałki na nim. Podaj tylko główny adres URL i rzeczywiste parametry.
- Najlepiej byłoby, gdyby w ogóle nie wymagał JavaScript. W tej aplikacji nie ma ku temu żadnego powodu.
- Chcę mieć dostęp do formantów w czasie renderowania i ustawiania wartości itp. W szczególności chcę mieć możliwość ustawienia domyślnych wartości formantów na wartości parametrów przekazane, jeśli ASP.NET nie może tego zrobić automatycznie dla mnie (w ramach innych ograniczeń).
- Cieszę się, że sam wykonuję walidację wszystkich parametrów i nie potrzebuję wiele w zakresie zdarzeń po stronie serwera. Naprawdę łatwo jest ustawić wszystko podczas ładowania strony zamiast dołączać zdarzenia do przycisków itp.
Większość z nich jest w porządku, ale nie znalazłem żadnego sposobu na całkowite usunięcie stanu widoku i zachowanie pozostałych przydatnych funkcji. Korzystając z posta z tego posta na blogu , udało mi się uniknąć uzyskania jakiejkolwiek rzeczywistej wartości stanu widoku - ale nadal kończy się to jako parametr adresu URL, który wygląda naprawdę brzydko.
Jeśli zrobię to jako zwykły formularz HTML zamiast formularza ASP.NET (tj. Wyjmij runat="server"
), nie otrzymam żadnego magicznego stanu widoku - ale nie mogę uzyskać programowego dostępu do elementów sterujących.
I mógłby zrobić to wszystko, pomijając większość ASP.NET i budowania dokumentu XML z LINQ do XML i wykonawczych IHttpHandler
. To jednak wydaje się nieco niski poziom.
Zdaję sobie sprawę, że moje problemy można rozwiązać albo przez złagodzenie moich ograniczeń (np. Używając POST i nie dbając o nadwyżkowy parametr) lub używając ASP.NET MVC, ale czy moje wymagania są naprawdę nieracjonalne?
Może po prostu nie ASP.NET skalowanie w dół do tego typu aplikacji? Jest jednak bardzo prawdopodobna alternatywa: po prostu jestem głupi i jest na to całkiem prosty sposób, którego po prostu nie znalazłem.
Jakieś myśli, ktoś? (Komentarze wskazujące, jak upadli potężni itp. W porządku - mam nadzieję, że nigdy nie twierdziłem, że jestem ekspertem ASP.NET, ponieważ prawda jest zupełnie inna ...)