タイトルがどれほど明確かはわかりません。ファイルアップロードスクリプトがあります。入力フィールドは、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");
}
編集:回避策が見つかりました。通常のフィールドごとに隠しフィールドを動的に作成します。最初の値を渡し、モデルに新しいプロパティを作成し、アップロードして保存するときに、ファイル名と非表示フィールドの値を比較します。