Asp.Net MVC Razor FileUpload Html Helper в существующий вид - PullRequest
4 голосов
/ 20 апреля 2011

У меня есть вид, в который я добавляю товары в простой онлайн-магазин.Я хочу иметь несколько изображений с одним продуктом.Вот почему я использую FileUpload от Microsoft.Web.Helpers.Использование FileUpload в моем представлении выглядит следующим образом:

@FileUpload.GetHtml("Upload", 5, true, true, addText: "Add more", uploadText: "Upload files")

Затем у меня есть несколько меток и полей для других атрибутов продукта, например:

<div class="editor-field"><br>
    @Html.EditorFor(model => model.Title)<br>
    @Html.ValidationMessageFor(model => model.Title)<br>
</div>

Проблема заключается в том, что при использованииМетод post, мой контроллер ничего не получает.Я использую контроллер следующим образом:

[HttpPost]
public ActionResult Create(Product product, IEnumerable<HttpPostedFileBase> fileUpload)
{
    foreach (var file in fileUpload)
    {
        var fileName = Path.GetFileName(file.FileName);
    }

    return RedirectToAction("Index");
}

Так кто-нибудь знает, что я делаю неправильно.Потому что мой объект FileUpload всегда пуст.

Ответы [ 3 ]

14 голосов
/ 20 апреля 2011

Скорее всего, в вашем BeginForm отсутствует обязательное поле. Это должно выглядеть так:

using(Html.BeginForm("Index", "Home", FormMethod.Post, 
    new { enctype="multipart/form-data" })) { 

}
5 голосов
/ 25 мая 2013

Теперь с помощью HttpPostedFileBase в mvc 4 легко загружать несколько файлов, EditorFor FileUpload в asp.net mvc 4 бритва

0 голосов
/ 11 марта 2014

У меня была эта проблема вчера вечером FileUpload элемент управления и имя параметра должны были совпадать

Изменение:

public ActionResult Create(Product product, IEnumerable<HttpPostedFileBase> **fileUpload**) 

до

public ActionResult Create(Product product, IEnumerable<HttpPostedFileBase> **upload**) 
...