Dans une petite application Web que je fais pour un usage interne, je veux que l'utilisateur puisse sélectionner l'un des fichiers de données à ouvrir. J'ai une vue fortement typée qui prend la liste des fichiers comme modèle.Plusieurs formes sur une vue dans ASP.Net MVC tout en conservant la validation
Ma version initiale avait une action Index qui contenait la liste des fichiers de données et renvoyait la vue, puis une action Créer pour créer un nouveau fichier et une action Télécharger pour télécharger un fichier existant. Toutefois, dans les deux cas, une nouvelle page entière ne contiendrait qu'une seule page pour un seul bouton et une seule zone de texte. J'ai donc ajouté deux formulaires à la vue Index, l'un pointant sur Créer, l'autre sur Télécharger, tous deux en utilisant Post verbe.
Cela fonctionne parfaitement bien, tout en conservant un bon nom d'URL - même si Create/Upload n'a pas d'interface utilisateur. Le problème est qu'à la fin de ces deux actions, je fais un return RedirectToAction ("Index"); Qui à son tour obtient les données à afficher et affiche la vue - très bien. Mais je n'ai pas de validation. Il semble que pour que les helpers ValidationSummary et ValidationMessage fonctionnent, j'ai besoin que l'action Post soit appelée comme l'action Get (Index, dans ce cas). J'ai tout changé pour avoir une action Get/Post Index, et une instruction if dans l'action Post pour voir si le bouton était Create ou Upload. Mais cela semble une solution loin d'être clunkie que celle que j'ai initialement trouvée.
L'autre option, bien sûr, est de créer des vues pour Create/Upload, chacune avec la seule zone de texte - mais je préfèrerais avoir le code clunky que l'interface utilisateur maladroite.
Y at-il quelque chose qui me manque, ou est-ce juste la façon dont le cadre de validation MVC est conçu.
Vous devez accepter quelques réponses à vos questions, s'attendre à ce que les gens répondent à plus d'entre eux ... – Palantir
Hmmm. Appologies pour cela. Je suis aveugle et utilise un lecteur d'écran - je croyais avoir reconnu les réponses en cliquant sur le bouton accepter. Va regarder dans cela et revenir à accepter les précédents. – Saqib
Quel lecteur d'écran utilisez-vous? –