To nie jest dokładnie ostatnie twierdzenie Fermata, ale wciąż wraca, by mnie drażnić niczym niezapłacony rachunek telefoniczny ze studiów. Czasami chcę utworzyć HyperLink
, który nie powoduje odświeżenia, dlatego chcę, aby docelowy adres URL był #. Gdy znacznik pochodzi z elementu UserControl w podfolderze, adres URL zostanie przepisany za pomocą ścieżki względnej, np. Z kontrolki UserControl w podfolderze.NavigateUrl = "#" staje się href = "SubFolder/#"?
<asp:HyperLink runat="server" NavigateUrl="#" >Click Me!</asp:HyperLink>
staje
<a href="SubFolder/#">Click Me!</a>
Który jest, niestety, źle. Oczywiście mogę obejść to, nie używając kontroli serwera, ale wydaje się to głupie. Czy można tego uniknąć?
Chodzi o to, że dodam zdarzenie click z jQuery lub z kodem, i nigdy nie chcę, aby powodowało odświeżenie, ale chcę, aby był to hiperlink z powodów CSS.
Możesz anulować nawigację za pomocą obiektu zdarzenia. function (e) {e.preventDefault(); }. Jeśli zamierzasz użyć jQuery do wiązania jakiegoś zdarzenia, nie ma sensu używanie kontrolki serwera. – BrunoLM
W tym konkretnym przypadku logika na serwerze kontroluje widoczność łącza, a także określony kod zdarzenia javascript. Oczywiście są sposoby obejścia tego problemu (np. Po prostu umieszczam go w symbolu zastępczym i używam znaczników <% %> do definiowania zdarzenia kliknięcia w znacznikach), ale wydaje się to głupie, że musiałbym zrobić jedną z tych rzeczy (użyj javascript, aby zapobiec nawigacji i/lub nie używają kontroli serwera) do zrobienia czegoś tak podstawowego, że można to zrobić znacznie bardziej elegancko dzięki kontroli serwera, która działała prawidłowo. –