我有一个.aspx
网页,其上添加了UserControl
。UserControl
当LinkButton
为clicked
时Postback
不click
第一次尝试。但是当我们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。
帮助感谢!
答案 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)
我面临同样的问题。 我在网格视图中有链接按钮。当我单击链接按钮时,第一次单击时不会回发,但是当我再次单击时,它会回发。 然后我正确检查我的代码,然后发现网格视图放置在更新面板中,因此第一次单击时不会回发。
所以我建议请检查一下。