2014-01-20 2 views
0

MVC 4 ajax 양식을 사용하여 이미지를 추가하려고하지만 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>... 
    } 

내 모델

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); 
       ... 
      } 
     } 

, I FileName을 가져올 수 없습니다. 항상 널값을 리턴합니다. 이 문제를 해결하도록 도와 주시겠습니까? 나는 매우 기쁠 것이다. 나는 모델이 결합하는 것을 시도의 요청 intead를 사용하여 이미지를 읽을 선호

+0

당신은 Ajax.BeginForm를 사용하여 파일을 업로드 할 수 없습니다. http://stackoverflow.com/questions/8499748/mvc3-file-upload-using-ajax-form-request-files-empty – Dave

+0

대단히 감사합니다. – koirene

답변

0

,

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 업데이트 됨! 관찰 해 주셔서 감사합니다. 코 이레 네 코드에서 복사하여 붙여 넣었습니다. 서명을 업데이트하는 것을 잊었습니다! –

+0

변경 코드가 잘 작동 한 후에 Ajax.BeginForm을 Html.BeginForm으로 바꿨습니다. 고맙습니다. – koirene