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
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 %>
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
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