0

が追加された.aspxWeb ページがあります。最初の試みではありません。しかし、再びそれを行うと、ページのリダイレクトだけが理由がわからないのですか?UserControlUserControlLinkButtonclickedPostbackclickPostback

何か案が?

.ASPX マークアップ:

 <asp:LinkButton ID="lnkCheckOut" runat="server" 
                        CssClass="button orange" onclick="lnkCheckOut_Click">Checkout</asp:LinkButton>

.cs ファイル内:

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);
        }
    }

最初のクリックでブラウザー (Chrome で F12 を使用) にマークアップが表示されると、次のように表示されます。

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

2 回目のクリック時:

<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>

注: Web ページまたは UserControl で UpdatePanel を使用していません。

助けて感謝!

4

3 に答える 3

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));
    }
}
于 2013-10-10T10:54:32.133 に答える
0

マークアップに PostBackUrl がありません。したがって、最初のクリックで、実際には同じページにポストバックされ、イベント ハンドラーが実行されます。

次に、イベント ハンドラーで PostBackUrl を設定します。

そのため、誰かが 2 回目にリンクをクリックすると、その URL に投稿されます。あなたのコードは設計どおりに機能しています:)

編集: Response.Redirect に変更することをお勧めしますが、コードが何をすべきかを正確に知ることは困難です。

于 2013-10-10T10:24:48.347 に答える