Jika saya menulis seperti ini:
form action = "Images" method = "post" enctype = "multipart / form-data"
berhasil.
Tapi di Razor dengan '@' itu tidak berhasil. Apakah saya melakukan kesalahan?
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
Select a file <input type="file" name="file" />
<input type="submit" value="Upload" />
</fieldset>
}
Kontroler saya terlihat seperti ini:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload()
{
foreach (string file in Request.Files)
{
var uploadedFile = Request.Files[file];
uploadedFile.SaveAs(Server.MapPath("~/content/pics") +
Path.GetFileName(uploadedFile.FileName));
}
return RedirectToAction ("Upload");
}
forms
asp.net-mvc-3
razor
kk-dev11
sumber
sumber
Jawaban:
Kode berikut berfungsi dengan baik:
dan menghasilkan seperti yang diharapkan:
Di sisi lain jika Anda menulis kode ini dalam konteks konstruksi sisi server lain seperti
if
atauforeach
Anda harus menghapus@
sebelumusing
. Sebagai contoh:Sejauh menyangkut kode sisi server Anda, inilah cara untuk melanjutkan :
sumber
<form>
tag bersarang (yang tidak diizinkan dalam HTML) atau Anda mungkin menggunakan beberapa javascript yang membajak pengiriman formulir normal dan melakukan permintaan AJAX yang tidak t bekerja dengan unggahan file.GET
tindakan Upload yang akan melayaniUpload.cshtml
pandangan yang berisi kode ini:public ActionResult Upload() { return View(); }
. Jadi, pastikan Anda memiliki pengontrol yang disebutUploadController
berisi dua tindakan Unggah: satu untuk melayani formulir dan yang lainnya untuk memproses pengiriman.