Загрузка изображения в ASP.NET MVC

У меня есть форма отправки, и я хочу передать свою информацию, такую ​​как изображение и другое поле, но я не знаю, как загрузить изображение.

это мой код controllerа:

[HttpPost] public ActionResult Create(tblPortfolio tblportfolio) { if (ModelState.IsValid) { db.tblPortfolios.AddObject(tblportfolio); db.SaveChanges(); return RedirectToAction("Index"); } return View(tblportfolio); } 

И это мой код:

 @model MyApp.Models.tblPortfolio 

Create

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.ValidationSummary(true)
tblPortfolio
@Html.LabelFor(model => model.Title)
@Html.EditorFor(model => model.Title) @Html.ValidationMessageFor(model => model.Title)
@Html.LabelFor(model => model.ImageFile)
@Html.TextBoxFor(model => model.ImageFile, new { type = "file" }) @Html.ValidationMessageFor(model => model.ImageFile)
@Html.LabelFor(model => model.Link)
@Html.EditorFor(model => model.Link) @Html.ValidationMessageFor(model => model.Link)

}

Теперь я не знаю, как загрузить изображение и сохранить его на сервере. Как я могу установить имя изображения Guid.NewGuid(); ? Или как я могу установить путь к изображению?

Во-первых, вам нужно будет изменить свое представление, чтобы включить следующее:

  

Затем вам нужно будет изменить свой ActionMethod чтобы взять HttpPostedFileBase , например:

 [HttpPost] public ActionResult Create(tblPortfolio tblportfolio, HttpPostedFileBase file) { //you can put your existing save code here if (file != null && file.ContentLength > 0) { //do whatever you want with the file } } 

Вы можете получить его из Request с использованием коллекции Request.Files , в случае загрузки одного файла просто прочитайте из первого индекса, используя Request.Files[0] :

 [HttpPost] public ActionResult Create(tblPortfolio tblportfolio) { if(Request.Files.Count > 0) { HttpPostedFileBase file = Request.Files[0]; if (file != null) { // business logic here } } } 

В случае загрузки нескольких файлов вам необходимо выполнить итерацию в коллекции Request.Files :

 [HttpPost] public ActionResult Create(tblPortfolio tblportfolio) { for(int i=0; i < Request.Files.Count; i++) { HttpPostedFileBase file = Request.Files[i]; if (file != null) { // Do something here } } } 

Если вы хотите загрузить файл без обновления страницы через ajax, вы можете использовать эту статью, которая использует плагин jquery

  • Обслуживание favicon.ico в ASP.NET MVC
  • Флажок для nullable boolean
  • Как визуализировать JavaScript в разделе MasterLayout с частичного просмотра?
  • Локальный хост не работает в chrome и firefox
  • Неожиданное ключевое слово "foreach" после символа "@"
  • В представлении на основе Razor не отображаются ссылочные сборки
  • Выделение синтаксиса Razor не работает в VS 2012 с MVC 5
  • Сложный объект и привязка модели ASP.NET MVC
  • Как определить метод в Razor?
  • Загрузка файла MVC 3 и привязка к модели
  • Синтаксис Razor обеспечивает непревзойденное преимущество в разметке пользовательского интерфейса?
  • Давайте будем гением компьютера.