Я создаю страницу в Asp.Net MVC, где пользователь может загрузить файл, а также подробную информацию о файле из текстовых полей.Viewmodel всегда null после загрузки файла
Для этого я использую viewmodel и очень простую конфигурацию метода. Эта страница заполняется правильно методом [Get], и пользователь может выбрать файл и ввести данные, но после нажатия кнопки «Отправить» и вызывается метод [Post], модель просмотра полностью равна нулю.
Я сделал свое исследование по этому вопросу и не пытался:
- добавления ENCTYPE = «многослойных/форма-данные»
- просто используя файл в качестве отдельного параметра
Чтобы не помогло.
Вот мои методы контроллера:
public ActionResult FileComment(int id)
{
//set up [get] view
return View("FileComment", obj);
}
//THIS METHOD's VIEWMODEL ALWAYS NULL
[HttpPost]
public ActionResult FileComment(CalibrationCommentViewModel file)
{
//save file to database
return View("Edit", new { id = file.id });
}
Вот часть моей точки зрения:
@using (Html.BeginForm("FileComment", "Calibration", FormMethod.Post, new { enctype = "multipart/form-data", @data_ajax = "false" }))
{
@Html.HiddenFor(m => m.ID)
<div class="container">
<h4>Add File for @Model.ID</h4>
<hr />
<div class="row">
<div class="col-md-1">g
@Html.LabelFor(model => model.file, htmlAttributes: new { @class = "control-label" })
</div>
<div class="col-md-2">
@Html.TextBoxFor(model => model.file, new { type = "file" })
</div>
<div class="col-md-9"></div>
</div>
<br />
<div class="row">
<div class="col-md-1">
@Html.LabelFor(model => model.attachmentType, htmlAttributes: new { @class = "control-label" })
</div>
<div class="col-md-2">
@Html.DropDownListFor(model => model.attachmentType, Model.attachTypeList, new { @class = "form-control" })
</div>
<div class="col-md-9"></div>
</div>
<br />
<div class="row">
<div class="col-md-1">
@Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label" })
</div>
<div class="col-md-2">
@Html.EditorFor(model => model.Date)
</div>
<div class="col-md-9"></div>
</div>
<br />
<div class="row">
<div class="col-md-1">
@Html.LabelFor(model => model.description, htmlAttributes: new { @class = "control-label" })
</div>
<div class="col-md-2">
@Html.TextAreaFor(model => model.description, new { cols=35, @rows=3})
</div>
<div class="col-md-9"></div>
</div>
<br />
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-2">
<button type="submit" onclick="JavascriptFunction()">Add to @Model.ID</button>
</div>
<div class="col-md-9"></div>
</div>
</div>
}
Dang даже не подумал об этом, спасибо! –