2017-04-22 5 views
0

HttpPostedFileBase을 컨트롤러에 게시 할 때 모델에 첨부 할 수 있습니까?mvc 컨트롤러 게시물에 모델이있는 파일을 전달하십시오.

모델이없는 HttpPostedFileBase 만 전달할 수있었습니다. 브라우저에서 네트워크 탭에서

나는 파일이 첨부지고 볼 수 있지만 내 컨트롤러에 도달 때

[HttpPost] 
public ActionResult ProcessFile(UploadMopdelWrapper model) 
{ 

} 

하고 여기에

public class UploadMopdelWrapper 
{ 
    public UploadMopdelWrapper() 
    { 

    } 

    public UploadMopdelWrapper(UploadMopdel upload) 
    { 
     UploadModel = upload; 
    } 
    public HttpPostedFileBase SelectedFile { get; set; } 
    public UploadMopdel UploadModel { get; set; } 
    public IEnumerable<ExcelRecord> ExcelList { get; set; } 
} 

@using (@Html.BeginForm("ProcessFile", "Hcp", new { enctype = "multipart/form-data" })) 
{ 
    <div class="form-group"> 
     <div class="col-md-4 text-right"> 
      @Html.LabelFor(x => x.UploadModel.JobNumber, new { @class = "control-label" }) 
     </div> 
     <div class="col-md-8"> 
      @Html.TextBoxFor(x => x.UploadModel.JobNumber, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(x=>x.UploadModel.JobNumber, null, new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-4 text-right"> 
      @Html.LabelFor(x => x.UploadModel.JobName, new { @class = "control-label" }) 
     </div> 
     <div class="col-md-8"> 
      @Html.TextBoxFor(x => x.UploadModel.JobName, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(x => x.UploadModel.JobName, null, new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-4 text-right"> 
      @Html.LabelFor(x => x.UploadModel.NotificationEmail, new { @class = "control-label" }) 
     </div> 
     <div class="col-md-8"> 
      @Html.TextBoxFor(x => x.UploadModel.NotificationEmail, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(x => x.UploadModel.NotificationEmail, null, new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-4 text-right"> 
      <label class="control-label">Selkect a File:</label> 
     </div> 
     <div class="col-md-8"> 
      <input type="file" name="selectedFile" /> 
     </div> 
    </div> 
    <div class="col-md-offset-4 col-md-8"> 
     <input type="submit" class="btn btn-info btn-block col-md-12" /> 
    </div> 

} 
는 null입니다

내 네트워크 탭에 다음과 같이 표시됩니다.

UploadModel.JobNumber:1 
UploadModel.JobName:w 
UploadModel.NotificationEmail:w 
selectedFile:week7_homework.sql 
+0

을 사용하고 있습니다. –

답변

2

당신은 경로 값으로 new { enctype = "multipart/form-data" }을 고려할 것입니다 다른 사람 때문에

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

처럼 Post 같은 형태의 방법을 설정해야합니다. 올바른 형식의 경우 귀하의 질문에 좀 더 명확하다 - 당신이 BeginForm의 오버로드를 보면 당신은 http://stackoverflow.com/editing-help을 읽어 보시기 바랍니다

FormExtensions.BeginForm Method (HtmlHelper, String, String, Object)

+0

어리석은 저, 나는 그것을 완전히 무시합니다. 감사합니다. – kkdeveloper7

관련 문제