0

profile.aspxページに asp.net linkBut​​ton (または imageButton) コントロールがあります。コードビハインドの下のページで Request.Querystring("id") をチェックしています。

http://localhost:42932/profile.aspx?id=1

プロファイル ページを最初に読み込んだときに、ポスト バックされません。大丈夫です!imageButton コントロールとアドレスを使用して、別のユーザー プロファイル (同じページでクエリ文字列が異なるだけ)に移動するとき。

http://localhost:42932/profile.aspx?id=2

それはポストバックされます。私はそれを再投稿したくありません。しかし、次のような通常のhtml入力要素を使用してこのページにアクセスすると

a href = "http://localhost:42932/profile.aspx?id=2"

それはポストバックされません。したがって、画像ボタンをhtml入力要素のように動作させたいと思います。

これが私のimageButtonです。

ASPX:

<asp:ImageButton ID="imgProfile" ImageUrl="images/site/profile1.png" runat="server"/>

.CS

imgProfile.PostBackUrl = "profile.aspx?id=" + Session["userID"];

編集:

 if (!IsPostBack)
    {
        Session["order"] = 0;
    }

このコントロールはページの読み込みにあります。したがって、上記の状態の !postback である必要があります。Session["order"] = 0 の場合、他のすべての関数が機能しているため

4

2 に答える 2

0

OnCLientClickの代わりにを使用しOnClickて、クライアント側のコードのみを実行します。次に、あなたがreturn false;

すなわち

<asp:ImageButton ID="imgProfile" ImageUrl="images/site/profile1.png" runat="server" OnClientClick="return false;" />

<img ..しかし、通常のhtml コントロールで実行できるのに、なぜサーバー コントロールを使用するのでしょうか。

于 2012-05-28T11:02:13.097 に答える
0

を指定するのではなく、ボタン クリック イベント ハンドラーでPostBackUrl使用することをお勧めします。Response.Redirect()

public void imgProfile_Click(object sender, eventArgs e){
   Response.Redirect("profile.aspx?id=" + Session["userID"]);
}

または、Hyperlinkコントロールを使用してNavigateUrlプロパティを設定するだけPage_Loadです:

<asp:HyperLink ID="imgProfile" runat="server"><img src="images/site/profile1.png" /></asp:Hyperlink>

imgProfile.NavigateUrl = "profile.aspx?id=" + Session["userID"];
于 2012-05-28T11:05:26.887 に答える