Ich versuche, eine sehr, sehr einfache "Micro-Webapp" zu erstellen, von der ich vermute, dass sie für einige Stack Overflow'rs von Interesse ist, wenn ich sie jemals fertig bekomme. Ich hoste es auf meiner C # in Depth-Site, die Vanilla ASP.NET 3.5 (dh nicht MVC) ist.
Der Ablauf ist sehr einfach:
- Wenn ein Benutzer die App mit einer URL betritt, die nicht alle Parameter angibt (oder wenn einer von ihnen ungültig ist), möchte ich nur die Benutzereingabesteuerelemente anzeigen. (Es gibt nur zwei.)
- Wenn ein Benutzer die App mit einer URL eingibt , das tut alle erforderlichen Parameter haben, möchte ich die Ergebnisse anzuzeigen und die Eingangskontrollen (so dass sie die Parameter ändern können)
Hier sind meine selbst auferlegten Anforderungen (Mischung aus Design und Implementierung):
- Ich möchte, dass die Einreichung GET anstelle von POST verwendet, hauptsächlich, damit Benutzer die Seite einfach mit einem Lesezeichen versehen können.
- Ich möchte nicht, dass die URL nach der Übermittlung albern aussieht, mit überflüssigen Kleinigkeiten. Nur die Haupt-URL und die realen Parameter bitte.
- Idealerweise möchte ich vermeiden, dass JavaScript benötigt wird. In dieser App gibt es keinen guten Grund dafür.
- Ich möchte während der Renderzeit auf die Steuerelemente zugreifen und Werte usw. festlegen können. Insbesondere möchte ich die Standardwerte der Steuerelemente auf die übergebenen Parameterwerte festlegen können, wenn ASP.NET dies nicht automatisch tun kann für mich (innerhalb der anderen Einschränkungen).
- Ich bin froh, die gesamte Parameterüberprüfung selbst durchführen zu können, und ich brauche nicht viel für serverseitige Ereignisse. Es ist wirklich einfach, alles auf Seitenladen einzustellen, anstatt Ereignisse an Schaltflächen usw. anzuhängen.
Das meiste davon ist in Ordnung, aber ich habe keine Möglichkeit gefunden , den Ansichtsstatus vollständig zu entfernen und den Rest der nützlichen Funktionalität beizubehalten. Mit dem Beitrag aus diesem Blog-Beitrag habe ich es geschafft, zu vermeiden, dass ein tatsächlicher Wert für den Ansichtsstatus erhalten wird - aber er endet immer noch als Parameter in der URL, was wirklich hässlich aussieht.
Wenn ich es zu einem einfachen HTML-Formular anstelle eines ASP.NET-Formulars runat="server"
mache (dh herausnehmen), erhalte ich keinen magischen Ansichtsstatus - aber dann kann ich nicht programmgesteuert auf die Steuerelemente zugreifen.
All dies könnte ich tun, indem ich den größten Teil von ASP.NET ignoriere, ein XML-Dokument mit LINQ to XML aufbaue und implementiere IHttpHandler
. Das fühlt sich allerdings etwas niedrig an.
Mir ist klar, dass meine Probleme gelöst werden können, indem ich entweder meine Einschränkungen lockere (z. B. POST verwende und mich nicht um den Überschussparameter kümmere) oder ASP.NET MVC verwende. Sind meine Anforderungen jedoch wirklich unangemessen?
Vielleicht ASP.NET skaliert einfach nicht nach unten auf diese Art von app? Es gibt jedoch eine sehr wahrscheinliche Alternative: Ich bin nur dumm und es gibt eine ganz einfache Möglichkeit, die ich einfach nicht gefunden habe.
Irgendwelche Gedanken, irgendjemand? (Cue-Kommentare darüber, wie die Mächtigen gefallen sind usw. Das ist in Ordnung - ich hoffe, ich habe nie behauptet, ein ASP.NET-Experte zu sein, da die Wahrheit genau das Gegenteil ist ...)