2016-08-17 11 views
0

私はファイルのリストを選択し、いくつかの追加情報を入力してバンドル全体を送信したいウェブフォームを持っています。コントローラは、追加入力されたデータに従ってファイルリストを処理する必要があります。したがって、私は1つのモデルですべてをバンドルしたい:私は今、提出-ボタンを使用する場合は、モデルがコントローラに送信され ASP.MVC 5でアップロードされたファイルのリストが空です

@model MyProgram.Models.MyModel 
@using MyProgram.Models 

@using (Html.BeginForm("UploadFile", "MyController", FormMethod.Post, 
                new { enctype = "multipart/form-data" })) 
{   
    <div class="row"> 
     <div class="col-sm-6">     
      <input type="file" name="Files" multiple /> 
     </div> 
     <div class="col-sm-6"></div> 
    </div> 
    <div class="row"> 
     <div class="col-sm-3">     
      @Html.DropDownListFor(model => model.AdditionalInformationsId, 
              ((MyDropDownList)Session["DDLists"]).companies, 
              Model.AdditionalInformation, 
              new { @class = "form-control", id = "ReceivingCompany" }) 
     </div> 
     <div class="col-sm-3"> 
      <br /> 
      <button class="btn btn-default" type="submit">Upload</button> 
     </div> 
     <div class="col-sm-6"></div> 
    </div> 
} 

よう

public class MyModel 
{ 
    public string AdditionalInformations { get; set; } 
    public int AdditionalInformationsId { get; set; } 
    public IEnumerable<HttpPostedFile> Files { get; set; } 
} 

public class MyController: Controller 
{ 
    [HttpPost] 
    public ActionResult UploadFile(MyModel Model) 
    { 
     switch(Model.AdditionalInformationsId) 
     { 
      case 1: 
       // do something with Model.Files 
      case 2: 
       // do something else with Model.Files 
      ... 
     } 

     RedirectToAction("Index"); 
    } 
} 

私のビューが見えます。例えば。 AdditionalInformationsIdには、フォームに入力された値があります。しかし、IEnumerable Filesは、アップロードするファイルを選択せず​​にフォームを送信した場合を除いて、常に空です。この場合、リストにはnullオブジェクトが含まれています。また、複数ファイル入力タグに属性id="Files"を追加しても機能しません。

エラーが見つかりません。 web.configに設定しなければならない設定がありますか?

答えて

1
今掲示ファイルはHttpPostアクションでファイルプロパティにマッピングされます HttpPostedFileBase

public IEnumerable<HttpPostedFileBase> Files { get; set; } 

のIEnumerableをにあなたの財産の種類を変更

+0

ありがとう、今は動作します!私は不思議です、あなたがなぜ 'public IEnumerable Files {get;}を使ってうまくいかないのか知っていますか?セット; } '? –

関連する問題