В вашем действии аргумент называется FileData
, поэтому будьте последовательны и в вашей разметке:
<input type="file" id="file" name="FileData" />
Или, если вы хотите сохранить файл в качестве имени для ввода, переименуйте аргумент в вашем действии:
[HttpPost]
public ActionResult UpdateClip(ClipModel model, HttpPostedFileBase file, string clipID)
{
return RedirectToAction("Clips");
}
Но лично я включил бы этот файл в качестве свойства моей модели представления, и я не буду беспокоиться о дополнительном аргументе:
public class ClipModel
{
... some properties
public HttpPostedFileBase File { get; set; }
}
и затем в моем строго типизированном представлении я буду использовать строго типизированный помощник для генерации входного файла, чтобы мне не пришлось беспокоиться о правильном именовании:
<li class="cell">
@Html.TextBoxFor(x => x.File, new { type = "file" })
</li>
и ваша подпись действия контроллера будет такой простой, как:
[HttpPost]
public ActionResult UpdateClip(ClipModel model)
{
return RedirectToAction("Clips");
}
так должно выглядеть большинство сигнатур действий контроллера POST.