2017-03-23 50 views
0

在Asp.net MVC中已經有一個正常的CRUD腳手架,但我使用自己的代碼來保存帖子。如何在ASP.NET MVC 5中執行編輯操作?

Abstract.cs(型號)

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"); 
    } 

} 

這是我的控制器和模型。在這裏,我試圖實現我自己的方式來執行編輯和更新的東西。 在這裏我真的很困惑如何執行此創建操作的編輯材料。

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); 
    } 

但是,這不起作用,請建議或提供一個解決方案,編寫一個編輯操作。

+0

你爲什麼不使用'AbstractFormViewModel'你'編輯()'方法? –

+0

什麼是不工作? (並且我假設'db.Entry(Abstract).'是一個拼寫錯誤,並且確實是'db.Entry(abstract).' - 在這兩種方法中的'return View'中都是這樣。 –

+0

將您的代碼放在問題中,而不是註釋它不可能讀取,尤其是當你沒有格式化時) –

回答

1

試試這個,把你的varibales和型號在它

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()); 
    } 
+0

'/'應用程序中的服務器錯誤 傳遞到字典中的模型項類型爲'shanuMVCUserRoles.Models.Abstract',但此字典r指定類型爲'shanuMVCUserRoles.ViewModels.AbstractFormViewModel'的模型項目。拋出錯誤 –

+0

您是否傳遞了直接模型,這裏是IEnumerable List,在您的代碼中再次檢查您傳遞的數據 – Saurabh

相關問題