2012-05-28 86 views
0

我有一個asp.net linkBut​​ton(或imageButton)控件,在我的profile.aspx頁面中。我在下面的代碼中檢查Request.Querystring(「id」)。ASP:Net LinkBut​​ton控件Postback問題

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

當我第一次加載它不回發的個人資料頁面。沒關係!。當我轉到另一個用戶配置文件(同一頁面只是查詢字符串不同)使用imageButton控件與adddress;

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

這種控制是在頁面加載。所以它應該是!回到我上面提到的狀態。因爲當Session [「order」] = 0時,所有其他功能都在工作。

回答

0

使用OnCLientClick而不是OnClick,以便您只運行客戶端代碼。然後,sepcify你return false;

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

但是,爲什麼要使用一個服務器控件,這時候可以用正常<img .. HTML控件做了什麼?

+0

這不是我要問的。我也希望服務器端代碼執行。但不回發! – Mtok

+0

回發將導致PageLoad()執行,因此請將您不想在其中運行的所有代碼與!IsPostBack放在一起,或者將其標記爲可以跳過您不想運行的代碼的內容。 – ericosg

+0

我編輯了我的帖子,請檢查它。是的,如果不是頁面加載,我的所有功能都可以正常工作。 – Mtok

0

而不是指定一個PostBackUrl我會建議在按鈕單擊事件處理程序使用Response.Redirect()

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

或者,只使用一個Hyperlink控制,並在Page_Load設置NavigateUrl屬性:

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

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

Response.Redirect也會使帖子回到同一頁面。我應該在項目中使用imageButton :) – Mtok

+0

我在Edit中添加了一個代碼,請參閱。 – Mtok