2014-01-20 3 views
0

Я пытаюсь добавить изображение с использованием формы ajax MVC 4, но всегда возвращает значение null. Я добавил свою модель, контроллер и представление.MVC 4 Ошибка загрузки изображения ajax

Мой Посмотреть

@using (Ajax.BeginForm("Create", "Images", new AjaxOptions { HttpMethod = "Post", OnSuccess = "OnSuccess", OnFailure = "OnFailure", UpdateTargetId = "messageDiv" }, new { enctype = "multipart/form-data" })) 
    { 
     @Html.AntiForgeryToken() 
     @Html.ValidationSummary(true) 
     <div class="editor-field"> 
        @Html.LabelFor(model => model.Image.Description, new { @class = "control-label" }) 
        <div class="controls"> 
         @Html.TextBoxFor(model => model.Image.Description) 
        </div> 
        @Html.TextBoxFor(model => model.FileImage, new { type = "file" }) 
        @Html.ValidationMessageFor(model => model.FileImage) 
       </div>... 
    } 

My Model

public class ImageViewModel 
    { 

     public IList<Image> Images { get; set; } 
     public Image Image { get; set; } 
     public HttpPostedFileBase FileImage { get; set; } 

    } 

Мой контроллер

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Create(ImageViewModel model, HttpPostedFileBase FileImage) 
     { 
      if (ModelState.IsValid) 
      { 
       var x = FileImage.FileName; 
       var imageUrl = Path.GetFileName(model.FileImage.FileName); 
       ... 
      } 
     } 

В этом примере я не удалось получить имя_файла. он всегда возвращает значение null. Не могли бы вы помочь мне решить эту проблему. Я буду очень счастлив.

+0

Вы не можете загружать файлы с помощью Ajax.BeginForm. См. Http://stackoverflow.com/questions/8499748/mvc3-file-upload-using-ajax-form-request-files-empty – Dave

+0

Большое вам спасибо. – koirene

ответ

0

Я предпочел бы считывать изображение с помощью запроса Intead попытки связать, что с моделью,

public ActionResult Create(ImageViewModel model) 
{ 
    if (Request.Files != null) 
    { 
     HttpPostedFileBase file = Request.Files[0]; //assuming that's going to be the first file 
     if (file.ContentLength > 0) 
     { 
      string fileName = Path.GetFileName(file.FileName); 
      string directory = Server.MapPath("/"); //change ths to your actual upload folder 
      file.SaveAs(Path.Combine(directory, fileName)); 
     } 
    } 

} 
+0

Вы можете удалить параметр FileImage в методе. –

+0

@ Djavier89 обновлен! спасибо за наблюдение, просто скопировал и вложил его из кода koirene, и я забыл обновить подпись! –

+0

Я превратил свой Ajax.BeginForm в Html.BeginForm, после того, как код изменения работал хорошо. Большое спасибо. – koirene

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