Обязательно укажите правильный enctype="multipart/form-data"
в своей форме, иначе вы не сможете загружать файлы:
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>New Image</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ImageToUpload)
</div>
<div class="editor-field">
<input type="file" name="imageToUpload" />
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
И если вы хотите использовать EditorFor
помощник для генерации файла ввода, вы можете использовать следующее:
<div class="editor-label">
@Html.LabelFor(model => model.ImageToUpload)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ImageToUpload)
</div>
, а затем определите пользовательский шаблон редактора для типа HttpPostedFileBase
(см. Ниже, что вам нужно изменить свою модель для фактического использования этого типа). Так что редактор шаблона в ~/Views/Shared/EditorTemplates/HttpPostedFileBase.cshtml
:
@model HttpPostedFileBase
@Html.TextBox("", null, new { type = "file" })
и в вашей модели представления используйте тип HttpPostedFileBase
и убедитесь, что имя свойства совпадает с именем файла, введенного в вашу форму:
public class ImageEditViewModel
{
public int CollectionId { get; set; }
public string Description { get; set; }
public HttpPostedFileBase ImageToUpload { get; set; }
public int Order { get; set; }
}
Также не забудьте оформить следующую запись в блоге .