我有方法public void categoriesForm_DeleteItem(int categoryID)
public partial class Categories_View1 : System.Web.UI.Page
。它是根据教程http://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/shopping-cart中的方法RemoveItem
建模的。
我的方法包含以下代码:
public void categoriesForm_DeleteItem(int categoryID)
{
/* some code ommited */
if (c != null)
{
db.Categories.Remove(c);
db.SaveChanges();
Response.RedirectToRoute("CategoriesList");
//should I add return; here?
}
else
{
ModelState.AddModelError("NotFoundError", "Category not found.");
return;
}
/* code ommited */
}
我应该在Response.RedirectToRoute(“CategoriesList”)之后添加return;
; ?
还有一个问题......我在教程中看到方法RemoveItem
返回 int ,返回代码背后的意图是什么?返回代码在哪里有用?
答案 0 :(得分:7)
我应该添加回报;在Response.RedirectToRoute(“CategoriesList”)之后; ?
这取决于您是否希望代码返回。
首先,请注意Response.Redirect()
和Response.RedirectToRoute()
之间的主要区别。默认情况下,前(旧)方法会中止线程,该线程会抛出ThreadAbortException
。因此,无论如何都不会在该语句之后执行任何代码。然而,后者(较新的)方法不。这意味着 之后的任何代码都将被执行。
鉴于此,请查看示例中的最后一位......
/* code ommited */
如果您不从方法返回,则将执行该代码。如果您不希望这种情况发生,您可能需要从方法返回或构造代码,以便在调用Response.RedirectToRoute()
后不再存在其他代码路径。
答案 1 :(得分:0)
void 方法默认没有返回类型。如果你返回一个对象或任何东西,你就会有运行时错误。