2011-12-01 5 views
0

좋아,이게 나를 사소한 운전! 이 팝업에서 Ajax.ActionLink에 의해 트리거되는 간단한 모달 팝업이 있는데 표준 HTML 파일 입력 컨트롤과 다른 텍스트 필드가 있습니다. 제출할 때 모든 텍스트 필드에 문제가 없지만 파일은 항상 null입니다. 다음은 내 코드의 복사본입니다 :MVC 3 모달 팝업 및 파일 입력

업데이트 작업 :

<div class="modal_content"> 
    @using (Html.BeginForm("UpdateClip", "EditProfile", new { clipid = Model.ID }, FormMethod.Post, new { @id = "modalpopupform", enctype = "multipart/form-data" })) 
    { 
     <ul class="list_to_row"> 
      <li class="cell" style="width: 75px">Clip Description</li> 
      <li class="cell"> 
       @Html.TextBoxFor(m => m.Description, new { style = "width: 350px" })<br /> 
       @Html.ValidationMessageFor(m => m.Description) 
      </li> 
     </ul> 
     <ul class="list_to_row"> 
      <li class="cell" style="width: 75px">Base Cost</li> 
      <li class="cell"> 
       @Model.BaseCost 
      </li> 
     </ul> 
     <ul class="list_to_row"> 
      <li class="cell" style="width: 75px">Cost</li> 
      <li class="cell"> 
       @Html.TextBoxFor(m => m.UserCost, new { style = "width: 350px" })<br /> 
       @Html.ValidationMessageFor(m => m.UserCost) 
      </li> 
     </ul> 
     <ul class="list_to_row"> 
      <li class="cell" style="width: 75px">Preview Image</li> 
      <li class="cell"> 
       <input type="file" id="file" name="file" /> 
      </li> 
     </ul> 
     <div class="clearfix"></div> 
     <div class="modal_button_area"> 
      <input id="submitmodalpopup" type="submit" value="Update" class="button" /> 
      <input id="closemodalbox" type="button" value="Cancel" class="button" /> 
     </div>  
    } 
</div> 

하는 사람이 되거하시기 바랍니다 수 :이 모달 창에 표시되는 부분의 형태이다

[HttpPost] 
    public ActionResult UpdateClip(ClipModel model, HttpPostedFileBase FileData, string clipID) 
    { 
     return RedirectToAction("Clips"); 
    } 

이에? 구글은 단어 조합에 대해 아무 것도 모르는 것처럼 보이지 않는다. 또는 내가 모르는 뭔가를 놓쳤다면. 건배. 액션에서

+0

첫번째 줄뿐만 아니라 전체 양식을 게시하십시오. –

답변

0

인수가 너무뿐만 아니라 마크 업에 일치 FileData라고 :

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

또는 당신이 당신의 입력의 이름으로 파일을 유지하려는 경우, 당신의 행동 인수의 이름을 바꿉니다

[HttpPost] 
public ActionResult UpdateClip(ClipModel model, HttpPostedFileBase file, string clipID) 
{ 
    return RedirectToAction("Clips"); 
} 

그러나 개인적으로 나는 내보기 모델의 속성으로이 파일을 포함 할 것입니다 내가 추가 인수를 귀찮게하지 않습니다

public class ClipModel 
{ 
    ... some properties 

    public HttpPostedFileBase File { get; set; } 
} 

내가 적절한 이름에 대해 걱정할 필요가 없습니다 있도록 다음 내 강력한 형식의보기에 나는 파일 입력을 생성하는 강력한 형식의 도우미를 사용합니다 :

<li class="cell"> 
    @Html.TextBoxFor(x => x.File, new { type = "file" }) 
</li> 

및 컨트롤러 액션 서명으로 될 것입니다

[HttpPost] 
public ActionResult UpdateClip(ClipModel model) 
{ 
    return RedirectToAction("Clips"); 
} 

대부분의 POST 컨트롤러 동작 서명은 다음과 같이 표시됩니다.

+0

건배 대린, 마크 업에서 불일치를 보지 못했다고 생각할 수 없습니다. 너무 오랫동안 나는 나무를 볼 수없는 나무를 보았습니다! 나는 당신의 충고를 받아 들였고 파일을 모델의 속성으로 추가했습니다. –