Caricamento dell’immagine in ASP.NET MVC

Ho un modulo di caricamento e voglio passare le mie informazioni come un’immagine e qualche altro campo ma non so come posso caricare l’immagine ..

questo è il mio codice controller:

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

E questo è il mio codice di visualizzazione:

 @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)

}

Ora non so come posso caricare l’immagine e salvarla sul server .. come posso impostare il nome dell’immagine con Guid.NewGuid(); ? O come posso impostare il percorso dell’immagine?

Innanzitutto, devi modificare la visualizzazione per includere quanto segue:

  

Quindi dovrai modificare il tuo post ActionMethod per prendere un HttpPostedFileBase , in questo modo:

 [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 } } 

Puoi ottenerlo dalla Request usando la Request.Files Collection, In caso di upload di un singolo file, leggi il primo indice usando 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 } } } 

In caso di caricamento di più file, è necessario eseguire l’iterazione nella raccolta 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 } } } 

Se si desidera caricare il file senza aggiornamento della pagina tramite ajax, è ansible utilizzare questo articolo che utilizza il plugin jquery