2016-06-22 10 views
0

インデックスからファイルをアップロードすると、コントローラの作成パラメータがnullになるのはなぜですか? 私は、「ファイル」とモデルクラスは「MyfileModel」MVCコントローラのパラメータが見つかりません

public ActionResult Create(HttpPostedFileBase filesBase) 
    {   
     try 
     { 
      if (ModelState.IsValid) 
      { 
       db.Files.Add(new File() 
       { 
        FileName = Path.GetFileName(filesBase.FileName) 
       }); 
       db.SaveChanges(); 
      } 
     } 
     catch (Exception) 
     { 
      var error = "Sorry not save"; 
     } 
     return Content(""); 
    } 



@using (Html.BeginForm("Create", "Home", FormMethod.Post, new {enctype = "multipart/form-data"})) 
{ 
<input type="file" name="file" id="file"/> 
<input type="submit" value="Upload"/> 
} 

答えて

0

ですあなたの入力は名前「ファイルベース」を持っている必要がありますデシベルのモデルに使用しています。または、アクション内の入力パラメーターの名前を「ファイル」に変更します。

+0

あなたはそれが動作、matkoありがとうございます。 データベースからファイル名を読み取るとどうすればいいですか? –

+0

データベースからのファイルに名前を割り当てる必要がありますか? –

+0

私は、データベースに格納された何かに応じてフォームフィールド名を割り当てるのは良い方法ではないと思います。モデル/ビューモデルのプロパティ用にフォームフィールドを生成する必要があります。 Fileプロパティを持つCreateModelがあるので、フィールドの名前はFileでなければなりません。 – xxxmatko

0

コントローラコード、私は同じことを達成するためにやっている方法を参照してください:ビューファイルで

[HttpPost] 
    public ActionResult File() 
    { 
     if (Request.Files.Count > 0) 
     {     
      var file = Request.Files[0]; 
      if (file != null && file.ContentLength > 0) 
      { 
       // do stuff 
      } 
     } 
     return View(); 
    } 

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

    <div class="form-group"> 
     <input name="file" type="file" /> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Create" class="btn btn-default" /> 
     </div> 
    </div> 
} 
+0

アクションに 'HttpPostedFileBase'を追加することは必須ではありません。 –

関連する問題