2012-05-28 1 views
0

profile.aspx 페이지에서의 asp.net하는 LinkButton (또는하여 ImageButton)을 제어 할 수 있습니다. I'am 뒤에 코드에서 아래의 페이지 ("ID") Request.QueryString을 확인.는 ASP : 인터넷 LinkButton 컨트롤의 포스트 백 문제

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

내가 먼저 다시 게시되지 않은 프로필 페이지를로드합니다. 괜찮아!. 내가 프로필을 다른 사용자에게 갈 때 Address가 생깁니다로하여 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; 
    } 

이 컨트롤은 페이지로드에 있습니다. 그래서 그것은 틀림없이! 위에서 언급 한 상태의 포스트 백이어야합니다. 다른 모든 기능이 Session [ "order"] = 0 일 때 작동하기 때문에

답변

0

대신 OnCLientClick을 사용하면 클라이언트 측 코드 만 실행할 수 있습니다. 그런 다음, 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

내 게시물을 편집하여 확인하십시오. 예, 모든 기능이 pageload가 아닌 경우 작동합니다. – 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

편집으로 코드를 추가했습니다. 참조하십시오. – Mtok