Если я напишу так:
form action = "Images" method = "post" enctype = "multipart / form-data"
оно работает.
Но в Razor с '@' это не работает. Я сделал какие-нибудь ошибки?
@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>
}
Мой контроллер выглядит так:
[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
кк-dev11
источник
источник
Ответы:
Следующий код отлично работает:
и генерирует, как ожидалось:
С другой стороны, если вы пишете этот код в контексте другой конструкции на стороне сервера, например,
if
илиforeach
вам следует удалить@
передusing
. Например:Что касается кода на стороне сервера, вот как это сделать :
источник
<form>
теги (что не разрешено в HTML), или вы, возможно, используете какой-то javascript, который перехватывает обычную отправку формы и выполняет запрос AJAX, который не ' работать с загрузкой файлов.GET
выгружать , которые будут служитьUpload.cshtml
вид , содержащий этот код:public ActionResult Upload() { return View(); }
. Поэтому убедитесь, что у вас есть вызываемый контроллер,UploadController
содержащий два действия Upload: одно для обслуживания формы, а другое для обработки отправки.