2012-03-09 9 views
0

MVC3 VB.NETアプリケーション。 mvc3アプリケーションのフォームに複数のファイルアップロードボックスがあります。 Request.Filesは、私が下の関数にブレークポイントを置いてそれを見ると3つのファイルを示します。問題は、カウンタをコーディングして、選択したケースを使用する以外の方法です。データベースの各列にファイル名を保存する方法所属しています...あなたが言うことができると思いますので、変数をオンザフライで割り当てることができますか?foreachループが正しい列にファイルをドロップするようにします。つまり、handoutFile1、handoutFile2、handoutFile3など... ....ループが終了するたびに、handoutfile1のファイル名を上書きします。ループ内にカウンタを投げ、カウンタの値に基づいてdbカラムを割り当てるために選択したケースを置くことを考えました。しかし、安い仕事のように見える。あなたは要求ごとにデータベーステーブルにファイルと名前を保存。

[HttpPost] 
    public ActionResult Index(IList<HttpPostedFileBase> postedFiles) 
    { 
     foreach (var file in postedFiles) 
     { 
      // 
     } 
     return View(); 
    } 

として、次のようなビュー内のパラメータで定義することができ、あなたのアクションでは

For Each File As String In Request.Files 

       Dim hpf As HttpPostedFileBase = TryCast(Request.Files(File), HttpPostedFileBase) 
       If hpf.ContentLength = 0 Then 
        Continue For 
       End If 

       Dim savedfileName As String = Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\CourseHandouts\" + hpf.FileName 
       hpf.SaveAs(savedfileName) 
       _filename = hpf.FileName 
       courses.handoutFile1 = _filename 

      Next 

答えて

1

私はVB.Netを知らないが、私はC#のコードに答えることを試みる、

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>TestModel</legend> 
    @Html.TextBox("postedFiles[0]",null, new { type = "file" }) 
    @Html.TextBox("postedFiles[1]",null, new { type = "file" }) 
    @Html.TextBox("postedFiles[2]",null, new { type = "file" }) 
    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 
} 
+0

各ループのために、各ファイル名を異なるデータベース列に保存する必要があるため、その上にダイスはありません。 – Skindeep2366

0

データベースの設計が間違っているようです。個々のファイルを別々の列に保存するのではなく、すべてのファイルを行として格納する別の表を作成し、レコードに一致するように最初の表に対する外部キーを作成できます。ですから、基本的に、あなたが最初のスキーマと連携し、別々の列に保存する必要が何らかの理由で一方たら...、

を代わりにcourses.handoutFile1を持つ配列になりますcourses.handoutFilescourses.handoutFile2を持って、あなたは「ドン醜いコードを使用する以外にも多くの選択肢があります。

関連する問題