Как установить входной файл в Razor 3 MVC 5

У меня в MVC 5 и Razor 5 код страницы такой:

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

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

Когда я создаю новый элемент и добавляю изображение по типу входного файла, он работает нормально. Но у меня есть тот же код в Edit.cshtml, и я хочу установить тип входного файла из модели, и идентификатор не работает. Я не могу установить этот входной файл.

Спасибо

1 ответ

Решение

Вам необходимо создать свойство в вашей модели:

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


}

В режиме редактирования:

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

В контроллере:

[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;
        }

    }
}
Другие вопросы по тегам