LinkBut​​ton在asp.net中第一次点击时不回发?

时间:2013-10-10 09:59:40

标签: c# asp.net postback linkbutton

我有一个.aspx网页,其上添加了UserControlUserControlLinkButtonclickedPostbackclick第一次尝试。但是当我们Postback再次执行 <asp:LinkButton ID="lnkCheckOut" runat="server" CssClass="button orange" onclick="lnkCheckOut_Click">Checkout</asp:LinkButton> 时,只有页面重定向不知道为什么?

有什么想法吗?

在.ASPX标记中:

protected void lnkCheckOut_Click(object sender, EventArgs e)
    {
        if (Session["UserID"] != null)
        {
            lnkCheckOut.PostBackUrl = "~/checkout.aspx?type=checkout";
            //Response.Redirect("~/checkout.aspx?type=checkout");
            Session["IsQuoteAdded"] = "false";
        }
        //if not logged in user
        else
        {
           lnkCheckOut.PostBackUrl = "~/login.aspx?returnUrl="+HttpUtility.UrlEncode(Request.RawUrl);
        }
    }

In.cs文件:

<a id="ctl00_ContentPlaceHolder1_shpCart_lnkCheckOut" class="button orange" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$shpCart$lnkCheckOut','')">Checkout</a>

当我在浏览器中看到标记(在Chrome中使用F12)首次点击时会显示:

<a id="ctl00_ContentPlaceHolder1_shpCart_lnkCheckOut" class="button orange" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$shpCart$lnkCheckOut", "", false, "", "login.aspx?returnUrl=%2fNew%2fMyBox.aspx", false, true))'>Checkout</a>

第二次点击:

{{1}}

注意:我没有在网页或UserControl中使用任何UpdatePanel。

帮助感谢!

3 个答案:

答案 0 :(得分:1)

您的代码不会重定向刚刚分配URL的页面。使用以下代码来纠正错误。

protected void lnkCheckOut_Click(object sender, EventArgs e)
{
    if (Session["UserID"] != null)
    {
        //lnkCheckOut.PostBackUrl = "~/checkout.aspx?type=checkout";
       Session["IsQuoteAdded"] = "false";
        Response.Redirect(@"~/checkout.aspx?type=checkout");

    }
    //if not logged in user
    else
    {
       Response.Redirect(@"~/login.aspx?returnUrl="+HttpUtility.UrlEncode(Request.RawUrl));
    }
}

答案 1 :(得分:0)

在你的标记中,没有PostBackUrl。因此,在第一次单击时,它实际上将回发到同一页面,并且您的事件处理程序将运行。

然后,在您的事件处理程序中,您正在设置PostBackUrl。

所以第二次有人点击链接时,它会发布到该URL。您的代码按设计工作:)

编辑:我建议更改为Response.Redirect,但很难确切知道您的代码应该做什么。

答案 2 :(得分:0)

我面临同样的问题。 我在网格视图中有链接按钮。当我单击链接按钮时,第一次单击时不会回发,但是当我再次单击时,它会回发。 然后我正确检查我的代码,然后发现网格视图放置在更新面板中,因此第一次单击时不会回发。

所以我建议请检查一下。