Bonjour à tous,
Je travaille sur une page simple mais qui pourtant me donne du fil a retordre :
J'ai une page avec deux formulaires (form) :
1 pour l'upload d'une image (pointe vers MonController/Upload)
1 pour inserer des données concernant l'image uploadée (pointe vers MonController/Create)
Jusqu'ici j'arrive à réaliser ce que je veux : j'uploade mon image, je récupère ses infos que je place dans une instance de mon Model et je renvoie le tout dans les champs du deuxieme form, j'arrive donc avec un formulaire prérempli.
Mon soucis est le suivant :
Quand j'arrive à l'étape ou j'ai tout rempli, si je me dis "zut, je me suis planté d'image", que je rappelle l'upload, après etre passé dans l'action Upload je perd toutes les données du Model car il ne fait pas partie du meme model.
Ma question est la suivante : Comment faire perdurer le model au travers de différents forms ?
Voici le code :
Page Create.aspx
MonController :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 <% Using Html.BeginForm("Upload", "MonController", FormMethod.Post, New With {.enctype = "multipart/form-data"})%> <p><input type="file" id="fileUpload" name="fileUpload" size="23"/> </p> <p><input type="submit" value="Upload file" /></p> <% End Using %> <% Using Html.BeginForm()%> <fieldset> <legend>Fields</legend> <p> <%=Html.TextBox("Fichier")%> Fichier: <% If Model IsNot Nothing Then Response.Write(Model.Fichier) End If %> <a href="#" onclick="jQuery('#dialog').dialog('open'); return false">Upload File</a> <%= Html.ValidationMessage("Fichier", "*") %> </p> <p> <label for="DatePublication">DatePublication:</label> <%= Html.TextBox("DatePublication") %> <%= Html.ValidationMessage("DatePublication", "*") %> </p> <p> <label for="Titre">Titre:</label> <%= Html.TextBox("Titre") %> <%= Html.ValidationMessage("Titre", "*") %> </p> <p> <label for="Description">Description:</label> <%= Html.TextBox("Description") %> <%= Html.ValidationMessage("Description", "*") %> </p> <p> <input type="submit" value="Create" /> </p> </fieldset> <% End Using %>
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 Function Upload(ByVal p As Photo) As ActionResult 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) If p Is Nothing Then p = New Photo End If p.Fichier = IO.Path.GetFileName(fic.FileName) TempData.Add("Photo", p) Return RedirectToAction("Create") Catch ex As Exception Return RedirectToAction("Create") End Try End If End If Return RedirectToAction("Create") End Function Function Create() As ActionResult If TempData.Keys.Contains("Photo") AndAlso TempData("Photo") IsNot Nothing Then Return View(TempData("Photo")) End If Return View() End Function ' ' POST: /PhotosAdministration/Create <AcceptVerbs(HttpVerbs.Post)> _ Function Create(ByVal collection As FormCollection) As ActionResult Try ' TODO: Add insert logic here Return RedirectToAction("Index") Catch Return View() End Try End Function
Partager