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
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
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
<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
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 ...
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.