2009-03-02 3 views
1

У меня есть кнопка asp: которая находится внутри гиперссылки asp:. Когда вы нажимаете кнопку в firefox, она переходит к правильному URL-адресу, указанному гиперссылкой asp:, но если вы нажмете кнопку в Internet Explorer, она останется на той же странице. Я просто с помощью свойства PostBackUrl на кнопку, чтобы решить эту проблему, но вот пример кода:asp: кнопка внутри asp: гиперссылка не перемещается на страницу в internet explorer

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

Почему выше работает в Firefox, но не IE?

+0

Почему у вас есть кнопки? –

+0

Я бы сказал, что вы действительно хотите спросить, как создать гиперссылку в виде кнопки – eglasius

+0

Я устраиваю кнопку, но мой вопрос в том, почему это работает в Firefox, но не в IE. – Xaisoft

ответ

7

Что вы сделали, это не очень правильно.

Просто добавьте кнопку и в обработчике щелчка сделать:

Response.Redirect("Page2.aspx"); 

В качестве альтернативы вы можете написать строку JavaScript:

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

Я просто использую свойство PostBackUrl на кнопке, которая отлично работает. – Xaisoft

+0

PostBackUrl - это еще одна история, но она тоже должна работать. Слишком много решений этой проблемы. –

+0

Любая идея, почему мой код выше не будет работать в IE, но в firefox. – Xaisoft

0

Ваша кнопка выполняет обратную передачу на той же странице. Если бы я был вами, я бы попытался использовать стандартную кнопку в панели инструментов HTML вместо кнопки ASP.NET.

Редактирование: Я бы более хотел предложить исключить управление вашей кнопкой и соответствующим образом усовершенствовать вашу гиперссылку или устранить ее и вместо этого использовать управление гиперссылкой и установить ее свойства отображения, отображаемые в виде кнопки.

+0

Почему это работает в firefox, но не в IE? – Xaisoft

1

Есть причина, почему вы используете кнопку внутри гиперссылка? В зависимости от конструкции вы пытаетесь для того чтобы достигнуть я хотел бы использовать только кнопку или 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' /> 

Code-Behind

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

Firefox vs Internet Explorer

Я подозреваю, что у вас есть расхождения между Firefox и Internet Explorer из-за того, что события барботируются/распространяются между b rowsers. Если вы хотите отменить распространение события, вам нужно будет включить вызов event.preventDefault() или event.stopPropagation() в обработчик события нажатия кнопки (в javascript)?

+0

На самом деле, я думаю, что я сделал это случайно, но теперь мне любопытно, почему это работает в firefox, но не в IE. Это может быть не лучший ответ, но я использую кнопку, потому что я устанавливаю CssClass на кнопке. – Xaisoft

0

Я бы использовал <asp:LinkButton CssClass="myButton" OnClick="Redirect" />, а затем CSS, чтобы его стиль, как вы хотите, чтобы он выглядел, и код для обработки функциональности.

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

Трехходового Разделение презентационной, разметка и функциональности является способом пойти на моем взгляде

+0

Это именно то, что я делаю с кнопкой, но мне было просто любопытно, почему он работает в firefox, а не в ie. – Xaisoft

Смежные вопросы