Mam stronę w mojej witrynie, dla celów tego przykładu powiedzmy, http://myhost/Pages/Default.aspx. W Default.aspx Mam kontrolę użytkownika o nazwie MyControl.ascx, która mieszka w /Controls/MyControl.ascx. Więc drzewo wyglądać takHiperłącze względem bieżącego adresu URL, a nie ścieżka kontroli użytkownika
- korzenia
- Pages
- Defalult.aspx
- Sterowanie
- MyControl.ascx
- Pages
Ilekroć umieścić kontrolę hiperłącza na MyControl.ascx i określ NavigateUrl ta ścieżka jest w stosunku do kontroli, a nie adres URL strony. Na przykład, jeśli w NavigateUrl podaję "AboutMe.aspx", URL będzie renderowany jako http://myhost/Controls/AboutMe.aspx zamiast http://myhost/Pages/AboutMe.aspx. Czy istnieje sposób, w jaki mogę zrobić to w odniesieniu do adresu URL strony? Próbowałem rozwiązanie tutaj: Relative path from an ASP.NET user control NavigateUrl, ale to nie działa dla mnie.
Edit
Dla wyjaśnienia, chciałbym to być wystarczająco rodzajowy tak, że gdybym nie wiedział, co ścieżka była rozwiązaniem będzie działać. Więc tak naprawdę nie chcę harcować "~/Pages/Default.aspx" w NavigateUrl
Proszę udostępnić zaktualizowany kod kontrolki HyperLink. Mam do czynienia z tym samym problemem, a miejsca, w których korzystam z kontroli, nie są stałe. Więc nie mogę zakodować adresu URL '~ \ xyx \ xyz \ myControl.aspx?'. Chcę uzyskać względny URL z mojej strony. –
@SunnyRGupta Skończyłem właśnie dodając runat = "server" do wszystkich moich tagów , a następnie używając operatora "~", aby uzyskać katalog główny aplikacji (patrz # 1 z odpowiedzi Kelsey poniżej). Chociaż przekazanie adresu URL jako własności z pewnością zadziałałoby. Ponieważ minęło około 2 1/2 lat odkąd to zamieściłem, jestem trochę zardzewiały co do tego, co dokładnie próbowałem osiągnąć tym pytaniem :) – Kyle
dziękuję za odpowiedź, już rozwiązałem problem na moim koniec. Dla innych, którzy trafiają na tę stronę za pośrednictwem Google, oto co zrobiłem: Użyłem linków z katalogu głównego za pomocą "/pathtopage/page.xyz" –