[ASP MVC] Validation formulaire en 4 étapes
Bonjour à tous,
Je cherche à réaliser un formulaire qui se passe en 4 étapes :
Etape 0 : Affichage d'un formulaire vide avec des champs et une partie pour upload
Etape 1 : Upload d'un fichier et affichage des données le concernant
Etape 2 : Ajout de données diverses via des champs
Etape 3 : Clic sur Ajouter : envoie les données (en les validant auparavant)
J'ai réussi à le faire mais il y a quelque chose qui ne va pas comme je l'aimerai :
La page create est composée de deux formulaires : un pour l'upload qui pointe sur MonController/Upload et un formulaire qui est composé de champs divers dont un qui reprend le nom du fichier uploadé précédemment qui pointe sur MonController/Create.
C'est à partir de là ou je pense mal m'y prendre :
Lorsque j'uploade mon fichier, je dois créer une nouvelle instance de mon objet qui sert de Model puis je sette la property Fichier avec le nom du fichier uploadé. Une fois fait, je dois rediriger vers le formulaire de création avec cette nouvelle instance de mon objet.
Là il y a quelque chose qui ne colle pas dans le sens où cet objet instancié possède une propriété Date qui est initialisée à Date.MinDate ce que je ne veux pas car le formulaire affiché a deux éléments renseignés au lieu d'un seul (Fichier et date renseignés au lieu de seulement Fichier).
Ensuite, le second probleme est qu'il passe par la validation de mon Model alors que je n'ai pas fait de submit sur mon formulaire concernant mon objet Model mais seulement la validation concernant l'upload du fichier.
Je pense que je m'y prend mal pour ce procédé. Comment le verriez vous ?
Merci d'avance
Edit : je poste un peu de code
Action Upload
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Function Upload()
If Request.Files.Count = 1 Then
Dim fic As HttpPostedFileBase = Request.Files(0)
If fic.ContentLength > 0 Then
Try
Dim bmp As New System.Drawing.Bitmap(fic.FileName)
Dim CheminFichier As String = IO.Path.Combine(HttpContext.Server.MapPath("../Content/Photos"), IO.Path.GetFileName(fic.FileName))
fic.SaveAs(CheminFichier)
Dim p As New Photo
p.Fichier = IO.Path.GetFileName(fic.FileName)
Return RedirectToAction("Create", p)
Catch ex As Exception
Return RedirectToAction("Create")
End Try
End If
End If
Return RedirectToAction("Create")
End Function |
Action Create
Code:
1 2 3 4 5
| Function Create() As ActionResult
ViewData("Categories") = New SelectList(_serviceCategories.GetList, "IDCategorie", "Nom")
Return View()
End Function |
Pour résumer ce que je cherche à faire très simplement :
Dans l'action Upload, je récupère un nom de fichier. J'aimerai que quand je fais le redirectToAction("Create") pouvoir placer ce nom de fichier dans l'input correspondant à Model.Fichier