if之后的响应重定向

时间:2016-03-06 15:50:29

标签: c# asp.net

我的ListView数据中有if和else语句

void insert() {

    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = "INSERT INTO SO VALUES (@Status, @DateOrdered, @UserID, @PaymentTerms, @ShippingTerms, @ShippingMethod, @DeliveryDate)";
    cmd.Parameters.AddWithValue("@Status", "NEW");
    cmd.Parameters.AddWithValue("@DateOrdered", DateTime.Now);
    cmd.Parameters.AddWithValue("@UserID", Session["userid"].ToString());
    cmd.Parameters.AddWithValue("@PaymentTerms", ddlPaymentTerms.SelectedValue);
    cmd.Parameters.AddWithValue("@ShippingTerms", lbShippingTerms.Text);
    cmd.Parameters.AddWithValue("@ShippingMethod", ddlShippingMethod.Text);
    cmd.Parameters.AddWithValue("@DeliveryDate", txtDeliveryDate.Text);
    cmd.ExecuteNonQuery();
    con.Close();

    Response.Redirect("/Users/Orders/SO/Default.aspx");
}

protected void btnCheckout_Click(object sender, EventArgs e) {

    foreach(ListViewItem Items in lvCart.Items) {
        //for
        //           (int i = 0; i < lvCart.Items.Count; i++)
        //{
        int ProductID = 0;
        Label lbproductid = (Label) Items.FindControl("lbproductid");
        ProductID = Convert.ToInt32(lbproductid.Text);

        int Available = 0;
        Label avail = (Label) Items.FindControl("avail");
        Available = Convert.ToInt32(avail.Text);

        int Quantity = 0;
        TextBox txtQty = Items.FindControl("txtQty") as TextBox;
        Quantity = Convert.ToInt32(txtQty.Text);
        //SqlDataReader dr = cmd.ExecuteReader();
        if (Quantity > Available) {
           error.Visible = true;
           con.Close();
        } else {
           insert();
           con.Close();
        }

        con.Close();
    }
    con.Close();
    Response.Redirect("/Users/Cart/Default.aspx");
}

我想要发生的是当它是IF(数量&gt;可用) 停留在页面中并显示错误

当else重定向到下一页时

我尝试了,如果还在,如果仍然重定向到下一页。

出了什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:3)

您似乎已将Response.Redirect放入foreach循环中。但是当你拨打Response.Redirect时,这将立即结束请求并执行重定向。因此,如果您想首先完成循环,可以使用一个布尔变量,如果条件满足,您将设置为true。然后你的循环的外部你可以检查这个布尔变量的值并相应地采取行动。

protected void btnCheckout_Click(object sender, EventArgs e)
{
    // by default we don't want to redirect so set the boolean
    // flag to false
    bool shouldRedirect = false;

    foreach (ListViewItem Items in lvCart.Items)
    {
        ...

        if (Quantity > Available)
        {
            ...
        }
        else
        {
            shouldRedirect = true;
        }
    }

    if (shouldRedirect)
    {
        Response.Redirect("/Users/Orders/SO/Default.aspx");
    }
}