ASP.NET MVC 4 プロジェクトがあり、1 つまたは複数のファイルをアップロードして保存し、そのファイルまたは複数のファイルのインスタンスを作成できるようにする必要があります (したがって、それらに関する情報を保持できます)。
これを実装するために、「モデル」内に 2 つのクラスがあります。
1. UploadFile: (このクラスは単一のファイルを表します)
public class UploadFile
{
public long ID { get; set; }
public string Path { get; set; }
public string Status { get; set; }
public HttpPostedFileBase File { get; set; }
}
2. スキャン: (このクラスはファイルの 1 回のアップロードを表します)
public class Scan
{
public IEnumerable<UploadFile> Files { get; set; }
public long ContentLength()
{
long size = 0;
foreach (UploadFile f in Files)
{
size =+ f.File.ContentLength;
}
return size;
}
}
また、コントローラー'HomeController.cs"が1つあり、そこに次のアクションがあります。
[HttpPost]
public ActionResult Index(Scan scan)
{
if (scan.ContentLength() > 0)
{
foreach (var s in scan.Files)
{
var fileName = Path.GetFileName(s.File.FileName);
var path = Path.Combine(Server.MapPath("~/Content/UploadFiles"), fileName);
s.File.SaveAs(path);
}
}
return RedirectToAction("Index");
}
ビューは'index.cshtml'で、これは begin.form です。
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<table>
<tr>
<td>File:</td>
<td><input type="file" name="Scan" id="Scan" multiple /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Upload" /></td>
</tr>
</table>
}
</div>
私の主な目標: 1 つまたは複数のファイルをアップロードし ("~/Content/UploadFiles" に保存)、このプロセス中に UploadFile とスキャンのインスタンスを作成し (スキャンは UploadFile のコレクションを保持します)、ユーザーにそれらを表すことができます。追跡を続け、DB にカタログ化します。
私の問題は、「homecontroller.cs」で「スキャン」がnullであることです。引数を渡して、2つのクラスのインスタンスを作成し、ファイルをアップロードするにはどうすればよいですか?
お気づきかもしれませんが、私は MVC の設計構造が初めてなので、実装のために MVC の 1 つまたは 2 つの点が欠けている場合はお知らせください。ありがとう。