Laden...

Hyperlink mit code behind navigate url in aspx

Erstellt von Jabi vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.511 Views
J
Jabi Themenstarter:in
222 Beiträge seit 2006
vor 14 Jahren
Hyperlink mit code behind navigate url in aspx

Hallo Leute,

ich arbeite derzeit einem asp.net 4 projekt und verwende routing

leider habe ich probleme meine links in der aspx seite zusammen zu stellen :



<asp:HyperLink ID="HyperLink3"
 NavigateUrl='<% = this.GetRouteUrl("search", new { keyword = this.txtSearch.Text})  %>'
 runat="server">HyperLink</asp:HyperLink>


oder gibts hier keine möglichkeit und ich muss alle routing links im code behind definieren ?

für jede hilfe bin ich sehr dankbar

79 Beiträge seit 2005
vor 14 Jahren

Ich verstehe deine Frage bzw. das Problem nich tso ganz.

Hast du eine Form mit einer TextBox (txtSearch) und einem HyperLink (HyperLink3)? Willst du die Eingabe in der TextBox als Parameter im Hyperlink haben?

roses are #FF0000 violets are #0000FF
all my base are belong to you

J
Jabi Themenstarter:in
222 Beiträge seit 2006
vor 14 Jahren

Die aspx seite verarbeitet meine NavigateUrl angabe nicht

bzw steht die dann genau so im quelltext also mit :
this.GetRouteUrl("search", new { keyword = this.txtSearch.Text"})

ich möchte den hyperlink nicht extra im code behind ansprechen und die navigateUrl setzen
sondern direkt auf der aspx seite und das geht nicht

79 Beiträge seit 2005
vor 14 Jahren

<asp:HyperLink ID="HyperLink3"
 NavigateUrl='<% = this.GetRouteUrl("search", new { keyword = this.txtSearch.Text"})  %>'
 runat="server">HyperLink</asp:HyperLink>

ist das direkt rauskopiert aus der Seite oder nachgeschrieben. Das Anführungszeichen nach this.txtSearch.Text gehört da mal nich thin und sollte eigentlich schon zu einem Fehler führen.

Ansonsten: der Ausdruck zur NavigateURL wird vor dem Rendern der Seite ausgeführt. Beim ersten aufruf ist this.txtSearch.Text vermutlich leer. Dementsprechend wäre dies dann auch der Wert (Ergebnis von GetRouteUrl) im Link.
Beim Nächsten Roundtrip könnte das natürlich anders aussehen, wenn der this.txtSearch.Text inhalt hat.

roses are #FF0000 violets are #0000FF
all my base are belong to you

J
Jabi Themenstarter:in
222 Beiträge seit 2006
vor 14 Jahren

huch das anführungszeichen gehört da nicht hin
hab das geschrieben da ich den code zuhause habe ....

das problem ist er ruft bzw führt die methode gar nicht aus

sondern wenn das control gerendert ist dann steht im quellcode auf der seite bei href:

this.GetRouteUrl(.... etc

wenn ich im code behind das control anspreche und die navigate url setze :


hyperlink3.NavigateUrl = this.GetRouteUrl("search", new { keyword = this.txtSearch.Text})


und im quellcode nach dem rendern beim href steht dann :
search/mein_txtSearchText/

ich weis ich hab das blöd erklärt aber ich weis auch ned wie ich das am besten erklären will

die navigateUrl lässt sich einfach nicht setzen mit der methode
und ich möchte die navigate url schon auf der aspx seite setzen
und nicht im code behind ...

B
95 Beiträge seit 2007
vor 14 Jahren

Hallo,

ist leider so nicht möglich.

http://support.microsoft.com/?scid=kb%3Ben-us%3B976112&x=11&y=9

Zitat:

"Remember that the displaying expression cannot be used in the attributes of server controls. This is because the .NET Framework directly compiles the whole expression instead of the displaying content as the value to the attribute."

Es geht nur über Datenbindung:

NavigateUrl = '<%# getUrl() %>'

Und dann im CodeBehind die DataBind()-Methode des Serversteuerelements aufrufen.

J
Jabi Themenstarter:in
222 Beiträge seit 2006
vor 14 Jahren

schade....
aber wenigstens weis ich nun woran ich bin 😃

danke trotzdem