Я попытался написать две следующие строки в моем представлении, чтобы загрузить файл.
@using (Html.BeginForm(new { enctype = "multipart/form-data" }))
& застенчивая;
@using (Html.BeginForm("Create", "Attachments", FormMethod.Post, new { enctype = "multipart/form-data" }))
Обе строки кода POST
для действия Create
на контроллере Attachments
, показанные обеими линиями, достигающими точки останова, которую я установил внутри Create
. Однако только вторая строка правильно загружает вложение. В первой строке вложение установлено на null
.
Почему первая строка не загружает файл, хотя он также выполняет POST
в Create
в Attachments
?
Вид:
@using (Html.BeginForm(new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Attachment</h4>
<div class="form-group">
@Html.LabelFor(model => model.File, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.File, htmlAttributes: new { @class = "form-control", type = "file", name = "file"})
@Html.ValidationMessageFor(model => model.File, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
Контроллер:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "AttachmentID,AttachmentName")] Attachment attachment, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
db.Attachments.Add(attachment);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(attachment);
}