在response.redirect

时间:2016-04-14 12:38:19

标签: c# asp.net

我有方法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 ,返回代码背后的意图是什么?返回代码在哪里有用?

2 个答案:

答案 0 :(得分:7)

  

我应该添加回报;在Response.RedirectToRoute(“CategoriesList”)之后; ?

这取决于您是否希望代码返回。

首先,请注意Response.Redirect()Response.RedirectToRoute()之间的主要区别。默认情况下,前(旧)方法会中止线程,该线程会抛出ThreadAbortException。因此,无论如何都不会在该语句之后执行任何代码。然而,后者(较新的)方法。这意味着 之后的任何代码都将被执行。

鉴于此,请查看示例中的最后一位......

/* code ommited */

如果您不从方法返回,则将执行该代码。如果您不希望这种情况发生,您可能需要从方法返回或构造代码,以便在调用Response.RedirectToRoute()后不再存在其他代码路径。

答案 1 :(得分:0)

void 方法默认没有返回类型。如果你返回一个对象或任何东西,你就会有运行时错误。