2009-08-03 9 views

Odpowiedz

22

Jeśli dodaj id i atrybut do linku runat="server" ...

<a id="YourLink" runat="server" href="../WOPages/WO_Main.aspx?WONum=12345"> 
    WorkOrder 
</a> 

... wtedy można uzyskać dostęp/zmienić programowo właściwość HRef ...

YourLink.HRef = "http://stackoverflow.com/"; 
+1

Brakuje tu czegoś podstawowego (jestem nowicjuszem) Próbowałem tego kodu i otrzymuję komunikat o błędzie "Nazwa YourLink nie istnieje w bieżącym kontekście" w części YourLink instrukcji YourLink.HRef. – dsteele

+0

Właśnie to wymyśliłem: w parametrach strony pliku .aspx parametr "Codefile" wskazywał na nazwę pliku: "LabEdit.aspx.cs". Powinien wskazywać ścieżkę: "~/WOPages/LabEdit.aspx.cs". Wiem, że nie przeniosłem pliku kodu lub pliku strony, więc może to być problem z VS2008. – dsteele

1

Można usunąć wszystkie kontrole z ContentPlaceHolder a następnie dodać nowy formant hiperłącza takiego:

// Create your hyperlink control 
HyperLink lnk = new HyperLink(); 
lnk.NavigateUrl = "http://domain.com"; 
lnk.Text = "Click here"; 

ContentPlaceHolder3.Controls.Clear(); 
ContentPlaceHolder3.Controls.Add(lnk); 

lub dać hiperłącza identyfikator i zaktualizować hiperłącze poprzez znalezienie kontrolę w ContentPlaceHolder:

HyperLink lnk = ContentPlaceHolder3.FindControl("MyLink") as HyperLink; 
lnk.NavigateUrl = "http://domain.com/update/"; 
lnk.Text = "Click here too"; 
1

Można używać znaczników lub czynią to zrobić:

<a href="<asp:literal id="hrefString" runat="server"></asp:literal>" 

i przypisać dosłowne w kodzie.

0

Ponieważ odsyłacz nie jest kontrolą serwera, obiekt zastępczy zawiera narzędzie LiteralControl, w którym tekst jest kodem HTML. Można uzyskać kod HTML i zastąpić atrybut href:

LiteralControl c = Content5.Controls[0] as LiteralControl; 
c.Text = Regex.Replace(c.Text, "(href=\")[^\"]+(\")", "$1http://www.guffa.com$2"); 

Jeśli dodać runat="server" oraz identyfikator łącza tak, że jest to kontrola serwera, robi się dużo prostsze, jak można po prostu ustawić to HRef nieruchomość .