user9461375
user9461375

Reputation:

how to upload image in ActionResult asp.net mvc?

I want set image to my post but I can't.all model field is fill but image field is null

my model class:

     public class Game
{
    public Game()
    {
        Platforms = new List<Platform>();
    }
    [Key]
    public int GameID { get; set; }
    public string Name { get; set; }
    public string Image { get; set; }
    [AllowHtml]
    public string Description { get; set; }
    public DateTime PublishDate { get; set; }
    public virtual ICollection<Platform> Platforms { get; set; }

}

my controller class :

public ActionResult Create_post(Game model,int[] platformsIds)
    {
        if (ModelState.IsValid)
        {
            foreach (var pId in platformsIds)
            {
                var platform = _repository.Get<Platform>(pId);
                model.Platforms.Add(platform);
            }

            _repository.Add<Game>(model);
            return RedirectToAction("Index");
        }
        ViewBag.Platforms = _repository.GetAll<Platform>().ToList();
        ViewBag.HtmlContent = model.Description;
        return View(model);
    }

thank you

Upvotes: 0

Views: 181

Answers (1)

mehdi farhadi
mehdi farhadi

Reputation: 1532

you just check image url before save your model

in your view you must have this code

 <div class="form-group">
        @Html.LabelFor(model => model.Image, htmlAttributes: new { @class = "control-label col-md-1" })
        <div class="col-md-4">
                <div class="col-md-6 col-md-push-0">
                    <input type="file" class="form-control" name="ImageUrl" id="ImageUrl" />
                </div>
                @Html.ValidationMessageFor(model => model.Image, "", new { @class = "text-danger" })                
        </div>
    </div>

in your controller you must change your code

public ActionResult Create_post(Game model,int[] platformsIds,HttpPostedFileBase ImageUrl)
    {
        if (ModelState.IsValid)
        {
            foreach (var pId in platformsIds)
            {
                var platform = _repository.Get<Platform>(pId);
                model.Platforms.Add(platform);
            }
            if (ImageUrl != null && ImageUrl.ContentLength > 0)
            {
                var uploadDir = "~/images/Games/"; // your location for save images
                string image = Guid.NewGuid().ToString() + ImageUrl.FileName;
                var imagePath = Path.Combine(Server.MapPath(uploadDir),image);
                ImageUrl.SaveAs(imagePath);
                model.Image = image;
            }

            _repository.Add<Game>(model);
            return RedirectToAction("Index");
        }
        ViewBag.Platforms = _repository.GetAll<Platform>().ToList();
        ViewBag.HtmlContent = model.Description;
        return View(model);
    }

Upvotes: 3

Related Questions