J'essaye de construire une "micro-webapp" très, très simple qui, je soupçonne, sera intéressante pour quelques Stack Overflow'rs si jamais je le fais. Je l'héberge sur mon site C # in Depth, qui est vanilla ASP.NET 3.5 (c'est-à-dire pas MVC).
Le déroulement est très simple:
- Si un utilisateur entre dans l'application avec une URL qui ne spécifie pas tous les paramètres (ou si l'un d'entre eux n'est pas valide), je souhaite simplement afficher les contrôles d'entrée utilisateur. (Il n'y en a que deux.)
- Si un utilisateur entre dans l'application avec une URL qui contient tous les paramètres requis, je souhaite afficher les résultats et les contrôles d'entrée (afin qu'ils puissent modifier les paramètres)
Voici mes exigences auto-imposées (mélange de conception et de mise en œuvre):
- Je souhaite que la soumission utilise GET plutôt que POST, principalement pour que les utilisateurs puissent facilement ajouter la page à leurs favoris.
- Je ne veux pas que l'URL finisse par avoir l'air idiot après la soumission, avec des morceaux superflus. Juste l'URL principale et les vrais paramètres s'il vous plaît.
- Idéalement, j'aimerais éviter de nécessiter JavaScript. Il n'y a aucune bonne raison pour cela dans cette application.
- Je veux pouvoir accéder aux contrôles pendant le temps de rendu et définir les valeurs, etc. En particulier, je veux pouvoir définir les valeurs par défaut des contrôles sur les valeurs de paramètres transmises, si ASP.NET ne peut pas le faire automatiquement pour moi (dans les autres restrictions).
- Je suis heureux de faire toute la validation des paramètres moi-même et je n'ai pas besoin de beaucoup d'événements côté serveur. Il est très simple de tout définir lors du chargement de la page au lieu d'attacher des événements à des boutons, etc.
La plupart de cela est correct, mais je n'ai trouvé aucun moyen de supprimer complètement l'état d'affichage et de conserver le reste des fonctionnalités utiles. En utilisant l'article de cet article de blog, j'ai réussi à éviter d'obtenir une valeur réelle pour l'état d'affichage - mais cela finit toujours comme un paramètre sur l'URL, ce qui semble vraiment moche.
Si j'en fais un formulaire HTML simple au lieu d'un formulaire ASP.NET (c'est-à-dire retirer runat="server"
), alors je n'obtiens aucun état de vue magique - mais alors je ne peux pas accéder aux contrôles par programme.
Je pourrais faire tout cela en ignorant la plupart d'ASP.NET et en créant un document XML avec LINQ to XML et en l'implémentant IHttpHandler
. Cela semble un peu bas cependant.
Je me rends compte que mes problèmes pourraient être résolus soit en relâchant mes contraintes (par exemple en utilisant POST et en ne se souciant pas du paramètre excédentaire) ou en utilisant ASP.NET MVC, mais mes exigences sont-elles vraiment déraisonnables?
Peut-être qu'ASP.NET ne se réduit tout simplement pas à ce type d'application? Il y a cependant une alternative très probable: je suis juste stupide, et il y a un moyen parfaitement simple de le faire que je n'ai tout simplement pas trouvé.
Des pensées, quelqu'un? (Cue des commentaires sur la manière dont les puissants sont tombés, etc.