我是使用ASP.Net(C#)的MVC3的初学者,但我没有得到删除记录的下一个情况。
我有一个View,要求用户确认删除项目(记录)。作为代码我有这个来初始化视图:
public ActionResult KeywordsDelete(Guid id)
{
_db = new BlaContext();
return _db.SearchTerms.Where(x => x.id.Equals(id)).First();
}
但是一旦确认,我就有了下一个代码。
[HttpPost]
public ActionResult KeywordsDelete(Guid id)
{
_db = new BlaContext();
var term = _db.SearchTerms.Where(x => x.id == id).First();
_db.SearchTerms.Remove(term);
_db.SaveChanges();
return View("Keywords", _db.SearchTerms.ToList());
}
无法构建,因为此方法的签名已存在(相同的参数和方法名称)。
所以我不知道在这种情况下如何删除记录。使用默认的Scaffold模板(删除)创建视图。
答案 0 :(得分:5)
我在阅读MVC时找到了解决这个问题的替代方案。查看:Improving the Details and Delete Methods
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id = 0)
{
// Delete stuff...
}
这会将操作Delete路由到方法DeleteConfirmed。
答案 1 :(得分:2)
您可以为帖子功能另外添加一个参数
[HttpPost]
public ActionResult KeywordsDelete(Guid id, FormCollection collection)
{
_db = new BlaContext();
var term = _db.SearchTerms.Where(x => x.id == id).First();
_db.SearchTerms.Remove(term);
_db.SaveChanges();
return View("Keywords", _db.SearchTerms.ToList());
}
但是我认为你的GET Action也应该返回一个View而不是一个数据对象。
public ActionResult KeywordsDelete(Guid id)
{
_db = new BlaContext();
return View(_db.SearchTerms.Where(x => x.id.Equals(id)).First());
}