Sathiya Raj
Sathiya Raj

Reputation: 25

How to perform edit action in ASP.NET MVC 5?

There are already a normal scaffolding for CRUD in Asp.net MVC but i am using my own code for saving the post.

Abstract.cs(Model)

public class Abstract
{
    public int ID { get; set; }

    [Required]
    public ApplicationUser Member { get; set; }

    [Required]
    public string AbstractTitle { get; set; }

    [Required]
    public string AbstractAim { get; set; }

    [Required]
    [StringLength(300)]
    public string AbstractDetails { get; set; }

    [Required]
    public string Author { get; set; }

    public string CoAuthor { get; set; }

}

AbstractController.cs

public class AbstractsController : Controller
{
    private readonly ApplicationDbContext _context;

    public AbstractsController()
    {
        _context = new ApplicationDbContext();
    }

    [Authorize]
    public ActionResult Create()
    {
        return View();
    }

    [Authorize]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(AbstractFormViewModel viewModel)
    {
        if (!ModelState.IsValid)
            return View("Create", viewModel);

        var memberId = User.Identity.GetUserId();
        var member = _context.Users.Single(u => u.Id == memberId);
        var abs = new Abstract
        {
            Member = member,
            AbstractTitle = viewModel.AbstractTitle,
            AbstractAim = viewModel.AbstractAim,
            AbstractDetails = viewModel.AbstractDetails,
            Author = viewModel.Author,
            CoAuthor = viewModel.CoAuthor

        };
        _context.Abstracts.Add(abs);
        _context.SaveChanges();
        return RedirectToAction("Index", "Home");
    }

}

This is my controller and model. Here i am trying to implement my own way to perform edit and update stuffs. Here i am really confused how to perform edit stuffs for this create action.

    public ActionResult Edit(int id)
    {
        var customer = _context.Abstracts.SingleOrDefault(c => c.Id == id);

        if (customer == null)
            return HttpNotFound();
        var memberId = User.Identity.GetUserId();
        var member = _context.Users.Single(u => u.Id == memberId);
        var viewModel = new Abstract
        {
            Member = member,
            AbstractTitle = viewModel.AbstractTitle,
            AbstractAim = viewModel.AbstractAim,
            AbstractDetails = viewModel.AbstractDetails,
            Author = viewModel.Author,
            CoAuthor = viewModel.CoAuthor

        };

        return View("CustomerForm", viewModel);
    }

But this isn't working please suggest or provide me a solution to write a edit action.

Upvotes: 1

Views: 1822

Answers (1)

Saurabh
Saurabh

Reputation: 1631

Try this , Put your varibales and model in it

public ActionResult Edit(string id, EMP objmodel)
    {
        if (System.Web.HttpContext.Current.Request.HttpMethod == "GET")
        {
            int j = Convert.ToInt32(id);

            EMP e =(EMP) db.EMPs.Single(n => n.id == j);
            //Either use Single(), SingleorDefault(), First(), FirstorDefault()
            return View(e);

        }
        else if (System.Web.HttpContext.Current.Request.HttpMethod == "POST")
        {
            if (objmodel.Name != null && objmodel.Email != null && objmodel.DOB != null)
            {
                //db.EMPs.AddorUpdate(objmodel);//requires using System.Data.Entity.Migrations;
                db.EMPs.Attach(objmodel);
                db.Entry(objmodel).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
                ViewBag.alert = u1.AlertDismissable("alert-success", "Record Updated successfully");
                TempData["alert"] = u1.AlertDismissable("alert-success", "Record Updated successfully");
                //return View("ShowAll", db.EMPs.ToList());
                return RedirectToAction("index", db.EMPs.ToList());
            }
            else
            {
                ViewBag.alert = u1.AlertDismissable("alert-danger", "No record Gets Updated , Maybe some fields are Empty");
                TempData["alert"] = u1.AlertDismissable("alert-danger", "No record Gets Updated , Maybe some fields are Empty");
                return View();
            }
        }

        ViewBag.alert = u1.AlertDismissable("alert-success", "Record added successfully");
        TempData["alert"] = u1.AlertDismissable("alert-success", "Record added successfully");
        //return View("ShowAll", db.EMPs.ToList());
        return RedirectToAction("index", db.EMPs.ToList());
    }

Upvotes: 2

Related Questions