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に設定しなければならない設定がありますか?
ありがとう、今は動作します!私は不思議です、あなたがなぜ 'public IEnumerable Files {get;}を使ってうまくいかないのか知っていますか?セット; } '? –