Reputation: 25
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
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