好的,我有一个mvc应用程序。我试图让我的删除工作。基本上我想要它所以当我点击删除时它会带我到一个页面说“你确定吗?”我有这个工作,问题是捕获请求并实际执行删除。我尝试了不同的方法。如下。
public ActionResult Delete(int id)
{
var something = friendsDB.Friends.Single(a => a.Id == id);
return View(something);
}
[HttpPost]
public ActionResult Delete(int id, string confirmButton)
{
var something = friendsDB.Friends.Single(a => a.Id == id);
// For simplicity, we're allowing deleting of albums
// with existing orders We've set up OnDelete = Cascade
// on the Album->OrderDetails and Album->Carts relationships
friendsDB.DeleteObject(something);
friendsDB.SaveChanges();
return View("Index");
}
那不起作用,deleteobject和savechanges声明
“C:\用户\ Mtszc \文件\视觉 工作室 2010 \项目\测试\测试\内容\ \控制器DownloadsController.cs(36,23): 错误CS1061:'Test.Models.FriendsDB' 不包含的定义 'DeleteObject',没有扩展方法 'DeleteObject'接受第一个 类型的论证 可以找到'Test.Models.FriendsDB' (你错过了使用指令或 汇编参考?)“
我尝试的第二件事是
public ActionResult Delete(int id)
{
var something = friendsDB.Friends.Single(a => a.Id == id);
return View(something);
}
[HttpDelete]
public ActionResult Delete(Friend myFriend)
{
try
{
friendsDB.Friends.DeleteOnSubmit(myFriend);
friendsDB.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
没有用。它编译但当我点击删除,它带我到我说我确定要删除的页面,它返回视图,这是捕获,这意味着尝试失败。
这是我制作的一个简单的sql数据库,Id,name,link。我正在使用linq到sql类。我可以创建和查看,但不能删除。
答案 0 :(得分:1)
尝试这样的事情。
var rowToDelete = friendsDB.Friends.Single(a => a.ID == myFriend.ID);
friendsDB.Friends.DeleteOnSubmit(rowToDelete);
friendsDB.SubmitChanges();
这将是一种使用Linq处理记录删除的简单方法。如果语法不完美,我很抱歉,因为我正在快速写出来。
顺便说一下,微软公司为了学习ASP.NET MVC和LINQ而制作了一些很棒的视频。看看这些。
干杯
答案 1 :(得分:0)
错误消息似乎让您感到困惑。
"C:\Users\Mtszc\Documents\Visual Studio 2010
\Projects\Test\Test\Content\Controllers\DownloadsController.cs(36,23): error
CS1061: 'Test.Models.FriendsDB' does not contain a definition for 'DeleteObject'
and no extension method 'DeleteObject' accepting a first argument of
type 'Test.Models.FriendsDB' could be found (are you missing a using directive
or an assembly reference?)"
不是指MVC Action,它指的是你的Test.Models.FriendsDB方法调用:
friendsDB.DeleteObject(something);
听起来你没有在friendsDB模型上定义方法“DeleteObject”,或者你没有一个接受'Test.Models.FriendsDB'对象类型的重载方法。
其次,不要将HTTP方法(Get,Post,Put,Delete)与您要完成的内容混淆。 “Put”和“Delete”是我不相信Web浏览器经常使用的方法。大多数请求都是GET,除非您提交表单,然后他们是POST。添加HttpDelete很可能会使Action无用。如果您只想从表单提交中删除操作,请添加HttpPost
答案 2 :(得分:0)
好的,谁见过这个我解决了这个问题。经过几个小时的挖掘,我解决了这个问题。对于任何使用linq to sql创建sql数据库并为其创建模型类的人来说,这是如何使删除工作。
public ActionResult Delete(int id)
{
var something = friendsDB.Friends.Single(a => a.Id == id);
return View(something);
}
[HttpPost]
public ActionResult Delete(int id, string confirmButton)
{
var sigh = friendsDB.Friends.Single(a => a.Id == id);
try
{
friendsDB.Friends.DeleteOnSubmit(sigh);
friendsDB.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
用这个,创建一个强类型的删除视图。