Question

J'ai dans le code MVC 5 et RAZOR 5 de page comme ceci:

<input type="file" name="file" />

<img src=@Url.Content(Model.ImagePath)" alt="Image"/>

Lorsque je crée un nouvel élément et ajoute une image par fichier de saisie, cela fonctionne correctement.Mais j'ai ce même code dans edit.cshtml et je souhaite définir le fichier de saisie du modèle et de l'identifiant ne fonctionne pas.Je ne peux pas définir ce fichier d'entrée.

merci

Était-ce utile?

La solution

Vous devez créer une propriété dans votre modèle:

public class ViewModel
{
    public string ImagePath{ get; set; }
.....


}

dans la vue Edition:

@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new 
                                       { enctype = "multipart/form-data" }))
{
    <label for="ImageUpload">Filename:</label>
    <input type="file" name="ImageUpload" id="ImageUpload" />
}

dans le contrôleur:

[HttpPost]
public ActionResult Action(ViewModel model)
{
    if (ModelState.IsValid)
    {

        var file = Request.Files["ImageUpload"];
        if (file != null && file.ContentLength > 0){
            var uploadDir = "~/uploads"
            var imagePath = Path.Combine(Server.MapPath(uploadDir), file.FileName);
            var imageUrl = Path.Combine(uploadDir, file.FileName);
            file.SaveAs(imagePath);
            model.ImagePath= imageUrl;
        }

    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top