2013-08-21 2 views
2

Я провел тестирование для загрузки фотографии в MVC (фото отправляется как параметр в контроллер AJAX CALL) с использованием формы, и теперь необходимо сделать то же самое но изменение:Форма enctype = "multipart/form-data" NOT WORKING

Первоисточник, который работает в:

<form action="/Home/Upload" method="post" enctype="multipart/form-data"> 

<label for="photo">Photo:</label> 
<input type="file" name="photo" id="photo" /> 

<input id="uploadbtn" type="submit" value="Upload" /> 
</form> 

и действия кода от контроллера:

[HttpPost] 
    public ActionResult Upload(HttpPostedFileBase photo) 
    { 
     // Verify that the user selected a file 
     if (photo != null && photo.ContentLength > 0) 
     { 
      // extract only the fielname 
      var fileName = Path.GetFileName(photo.FileName); 
      // store the file inside ~/App_Data/uploads folder 
      var path = Path.Combine(Server.MapPath("~/C:/poze"), fileName); 
      photo.SaveAs(path); 

     } 
     return Json(new { Success = true }); 
    } 

Это работает, но в данном случае не работает:

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

    <div class="control-group"> 
    <label class="control-label" for="photo">Photo:</label> 
    <div class="controls"> 
     <input type="file" name="photo" id="photo" /> 
    </div> 
    </div> 
} 

и Действие код:

public ActionResult EditModule(INT ID, string Description, HttpPostedFileBase photo) 
{ 
    if (photo != null && photo.ContentLength > 0) 
    { 
     // extract only the fielname 
     var fileName = Name + ".png"; 
     // store the file inside ~/App_Data/uploads folder 
     var path = Path.Combine(Server.MapPath("~/Content/Module Previews"), fileName); 
     photo.SaveAs(path); 
    } 

    else 
    { 
     Status += "Error image"; 
     Success = false; 
    } 
} 

Когда я отладки EditModule значение для фото является NULL. Я уверен, что нет никаких проблем с javascript и ajax-вызовом.

+2

Какой 'javascript и ajax call'? – Zabavsky

ответ

6

Вы установили свой контроллер и имя действия в значение null, чтобы форма не знала, куда отправлять сообщения. Измените первые 2 параметра будет имя действия и контроллер Имя:

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

Работает для меня (но я не пытаюсь делать ajax.) –

2

Когда я отладки EditModule значение для фото является NULL. Я уверен, что нет никаких проблем с javascript и ajax-вызовом

Вы не можете загружать двоичные файлы с помощью ajax. Вы либо должны использовать <IFRAME> или Flash-плагин.

Смотрите этот ответ для получения дополнительной информации: https://stackoverflow.com/a/6462673/70386

0

Когда вы нуль в действии и контроллер, MVC использует текущее действие и контроллер.

Смежные вопросы