【发布时间】:2017-10-23 10:49:58
【问题描述】:
我得到这个代码来从数据库中删除一个类别行。类别只有 2 列:ID 和名称。 它不会宣布任何错误。它只是行不通。
如果有效,它应该重定向到Categories/Index。相反,它显示Categories/Delete,但现在没有任何类别作为参数。
public ActionResult Delete(int id)
{
var category = db.Categories.Where(r => r.Id == id).SingleOrDefault();
return View(category);
}
[HttpPost]
public ActionResult Delete(Category category)
{
try
{
Category c = db.Categories
.Where(r => r.Id == category.Id)
.Single<Category>();
db.Categories.DeleteOnSubmit(c);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View(category);
}
}
但是创建操作的这段代码可以正常工作:
public ActionResult Create()
{
Category c = new Category();
return View(c);
}
[HttpPost]
public ActionResult Create(Category category)
{
try
{
Category x = new Category
{
Name = category.Name
};
db.Categories.InsertOnSubmit(x);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
【问题讨论】:
-
我认为它正在引发错误,您不会知道,因为它正在被吞噬并且您正在返回默认(索引)视图。捕获异常,看看它是什么。
-
不。没有。我花了一个多小时看这个。没有错误。我只是不工作。
-
所以你改变了你的代码?因为你永远不会知道抛出了异常,除非你正在调试并且将异常设置配置为在所有公共语言运行时异常上中断。
-
不知道你所说的打破 CLR 是什么意思。我是 Visual 的新手(仍然是一年级学生)。我只是查看所有错误/消息/警告选项卡,什么都没有。我还查看了调试窗口中的事件选项卡:什么都没有。
-
而不仅仅是
catch,而是catch(Exception ex) { return View(); }。在“return View()”上放置一个断点(F9),如果断点被击中,您可以查看ex的属性。您也可以按 ctrl+D、E 并在将打开的异常设置窗口中选中“公共语言运行时异常”旁边的框。
标签: c# sql-server asp.net-mvc linq