2009-03-02 9 views
1

asp : 하이퍼 링크 안에있는 asp : 버튼이 있습니다. Firefox에서 버튼을 클릭하면 asp : 하이퍼 링크로 지정된 올바른 URL로 이동하지만 Internet Explorer에서 버튼을 클릭하면 동일한 페이지에 유지됩니다. 난 그냥 문제를 해결하기 위해 버튼의 PostBackUrl 속성을 사용하지만, 여기에 코드의 예입니다 :asp : ASP 내의 버튼 : 하이퍼 링크가 인터넷 익스플로러에서 페이지로 이동하지 않습니다.

<asp:Hyperlink ID="hyp" runat="server" NavigateUrl="Page2.aspx"> 
<asp:Button ID="btn" runat="server" Text="Submit" /></asp:Hyperlink> 

이유는 무엇입니까 위의 파이어 폭스에서 작동하지만하지 IE?

+0

왜이 버튼을해야합니까 내 의견으로 갈 수있는 방법이 있나요? –

+0

버튼으로 하이퍼 링크를 스타일링하는 방법을 묻고 싶습니다. – eglasius

+0

버튼을 스타일링하고 있지만 제 질문은 위의 작업이 Firefox에서는 가능하지만 IE에서는 그렇지 않습니다. – Xaisoft

답변

7

정확하지 않습니다.

그냥 버튼을 추가하고 클릭 핸들러에서하는 수행

<input type="button" value="Text" onclick="location='Page2.aspx'" /> 
+2

Im 그냥 잘 작동하는 단추에 PostBackUrl 속성을 사용하고 있습니다. – Xaisoft

+0

PostBackUrl은 또 다른 이야기이지만 너무 효과가 있습니다. 이 문제에 대한 해결책은 너무 많습니다. –

+0

위의 코드가 IE에서는 작동하지 않지만 Firefox에서는 작동하지 않습니다. – Xaisoft

0

버튼이 동일한 페이지에서 다시 게시를 실행 중입니다. 내가 당신이라면 ASP.NET 도구 대신 HTML 도구 상자에서 표준 단추를 사용하려고합니다.

편집 : 단추 컨트롤을 제거하고 하이퍼 링크의 스타일을 적절하게 지정하거나 둘 다 제거하고 대신 하이퍼 링크 단추 컨트롤을 사용하고 단추로 표시 속성이 설정되도록하는 것이 좋습니다.

+0

IE가 아닌 Firefox에서 작동하는 이유는 무엇입니까? – Xaisoft

1

당신이 내부의 버튼을 사용하는 이유가 있나요 :

Response.Redirect("Page2.aspx"); 

은 또한 당신은 자바 스크립트의 라인을 작성할 수 있습니다 하이퍼 링크? 내가 그냥 버튼이나하는 LinkButton을 사용 실현하려 노력하고있다 디자인에 따라 다음

<asp:Button runat='server' id='button1' Text='Click Me' Click='button1_Click' /> 
<asp:LinkButton runat='server' id='linkbutton1' Text='Click Me' Click='button1_Click' /> 

코드 숨김

protected void button1_Click(object sender, EventArgs e) { 
    // some logic 
    Response.Redirect("Page2.aspx"); 
} 

파이어 폭스 코드 숨김에서 논리 후 리디렉션을 vs Internet Explorer

b와 b 사이에 이벤트가 버블 링/전파되는 방식 때문에 Firefox와 Internet Explorer간에 불일치가 있다고 의심됩니다. rowsers. 이벤트 전파를 취소하려면 버튼 클릭 이벤트 핸들러 (자바 스크립트)에 event.preventDefault() 또는 event.stopPropagation()에 대한 호출을 포함해야합니다.

+0

사실, 나는 이것을 우연히 생각했지만 지금은 파이어 폭스에서 작동하는 이유는 궁금하다. IE가 아니다. 이것은 가장 좋은 대답은 아니지만 버튼에 CssClass를 설정하기 때문에 버튼을 사용하고 있습니다. – Xaisoft

0

<asp:LinkButton CssClass="myButton" OnClick="Redirect" />을 사용하고 CSS를 사용하여 스타일을 지정하고 코드 비하인드 기능을 처리하도록 지정합니다. 프리젠 테이션, 마크 업 및 기능의

protected void Redirect(object sender, EventArgs e) 
{ 
    // do something 
} 

세 가지 방법 seperation에는

+0

그게 바로 내가 버튼으로하고있는 일이지만, 내가 파이어 폭스에서 작동하는 이유가 궁금 해서요. – Xaisoft

관련 문제