在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);
}
但是,这不起作用,请建议或提供一个解决方案,编写一个编辑操作。
你为什么不使用'AbstractFormViewModel'你'编辑()'方法? –
什么是不工作? (并且我假设'db.Entry(Abstract).'是一个拼写错误,并且确实是'db.Entry(abstract).' - 在这两种方法中的'return View'中都是这样。 –
将您的代码放在问题中,而不是注释它不可能读取,尤其是当你没有格式化时) –