私はASP.net MVCにはネットですが、C#では初めてです。私は自分のプロジェクトでデータソースとリンクしました。そして、私はCreate Update Updateのメソッドとビューを作成しました。すばらしいです。今私はいくつかのものをカスタマイズする必要があります。Asp.Netでファイルをアップロードする - 非同期コントローラ
まず、.csvファイルをアップロードする必要があります。これは、私たちが旧式のペン&ペーパシステムから移行している間に、私たちのモデルのひとつになってしまいます。
はここで送信ボタンを押したときに呼び出されますのを取得ポストバック方法です:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "callout_id_pk,start_timestamp,drivers_license_needed,med_training_needed,worksite_code_fk,shift_notes,status,job_class_code_fk,worksite_name,job_class_name,gender_req")] Callout callout)
{
Debug.WriteLine("THIS LINE OF CODE RAN?");
if (ModelState.IsValid)
{
db.Callouts.Add(callout);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
foreach (string upload in Request.Files)
{
if (Request.Files[upload].ContentLength == 0) continue;
string pathToSave = Server.MapPath("~/App_Data/UploadedFiles");
string filename = Path.GetFileName(Request.Files[upload].FileName);
Request.Files[upload].SaveAs(Path.Combine(pathToSave, filename));
}
ViewBag.worksite_code_fk = new SelectList(db.Worksites, "worksite_code_pk", "worksite_name", callout.worksite_code_fk);
return View(callout);
}
そして、ここでは読みやすくするために除去された非関連コントロールで、ビューです。
@using (Html.BeginForm("Create", "Callouts", FormMethod.Post, new {enctype="multipart/form-data"}))
{
@Html.AntiForgeryToken()
<[email protected](true, "", new { @class = "text-danger" })-->
<div class="form-group">
<input type="file" name="FileUpload1" /><br />
</div>
<!-- other form controls here -->
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
}
ここで、ポストバックの何らかの理由で、Request.Filesに投稿されたファイルが表示されません。私はここで何が欠けていますか?今のところ、私はファイルをディスクに保存しようとしていることに注意してください。しかし、最終的にファイルは読み込まれ、モデルを生成するために使用されます。