0

タイトルがどれほど明確かはわかりません。ファイルアップロードスクリプトがあります。入力フィールドは、testdata という名前の javascript で動的に作成されます。ユーザーがアップロードするファイルごとに 1 つの入力フィールドが作成されます。これまでの私のモデルは、フィールドの値を取得するだけです。

 public string testdata { get; set; }

コントローラーの後半で、値を取得してファイルに書き込みます。問題は、複数のファイルをアップロードするときに、コントローラーがすべての入力から値を収集し、それらをすべての行にまとめて書き込むことです。私が欲しいのは、各入力(各アップロード)からの値を含む別の行を持つことです。コントローラーは、私が要求したことを単純に実行します。入力フィールドのIDにアクセスする方法がわかりません。モデルを変更する必要があることはわかっていますが、方法がわかりません。どんな助けでも感謝します。ありがとう!

あまり明確でない場合のコントローラー:

        [HttpPost]
    public ActionResult Index(UploadsModel model, IEnumerable<HttpPostedFileBase> files)
    {
        string uploadDir = Server.MapPath("~/App_Data/uploads");
        foreach (string fileKey in Request.Files)
        {
            HttpPostedFileBase file = Request.Files[fileKey];
            StreamWriter tw = System.IO.File.AppendText(Path.Combine(uploadDir, "post_data.txt"));
            tw.WriteLine(System.DateTime.Now + " " + file.FileName + " " + model.testdata);
            tw.Close();
            file.SaveAs(Path.Combine(uploadDir, file.FileName));
        }

        //could go somewhere else...
        return RedirectToAction("Index");
    }

編集:回避策が見つかりました。通常のフィールドごとに隠しフィールドを動的に作成します。最初の値を渡し、モデルに新しいプロパティを作成し、アップロードして保存するときに、ファイル名と非表示フィールドの値を比較します。

4

0 に答える 0