#asp.net-mvc-4
#asp.net-mvc-4
Вопрос:
Я пытаюсь загрузить два изображения из формы в MVC 4. Я видел эту статью, и она отлично работает так, как это делал Haaked, но когда я попытался сделать то же самое с помощью @using(Html.BeginForm())
, это не сработало
У меня есть метод Action от контроллера, который работает для обоих сценариев:
[HttpPost]
public ActionResult Photo(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
if (file != null amp;amp; file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Content/Photos/"), fileName);
file.SaveAs(path);
}
}
return RedirectToAction("Photo");
}
Проблема возникает из представления. Вот код с взломанного веб-сайта, для представления, который работает:
<form action="" method="post" enctype="multipart/form-data">
<label for="file1">Filename:</label>
<input type="file" name="files" id="file1" />
<label for="file2">Filename:</label>
<input type="file" name="files" id="file2" />
<input type="submit" />
</form>
И вот мой код, который этого не делает.
@using (Html.BeginForm())
{
<label for="file1">Filename:</label>
<input type="file" name="files" id="file1" />
<label for="file2">Filename:</label>
<input type="file" name="files" id="file2" />
<input type="submit" />
}
Что я делаю не так?
Ответ №1:
Вам необходимо указать enctype в перегрузке метода Html.BeginForm для загрузки файла.
@using (Html.BeginForm("YourAction", "YourController", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
<label for="file1">Filename:</label>
<input type="file" name="files" id="file1" />
<label for="file2">Filename:</label>
<input type="file" name="files" id="file2" />
<input type="submit" />
}