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
Action Create
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Pour résumer ce que je cherche à faire très simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Function Create() As ActionResult ViewData("Categories") = New SelectList(_serviceCategories.GetList, "IDCategorie", "Nom") Return View() End Function
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
Partager