webForumDet fria alternativet

HTMLEncode och asp:hyperlink

7 svar · 588 visningar · startad av Addeladde

AddeladdeMedlem sedan jan. 20012 997 inlägg
#1

Hej

ASP.NET har ju som standard att HTML encoda allt som skickas ut till de inbyggda kontrollerna. Om man har en asp:hyperlink och skickar ut en adress med en frågesträng så omvandlas t.ex. & till & I de allra felsta fall är detta ingen fara eftersom webbläsarna ändå hanterar det korrekt. Problemet är att jag skickar med en variabel på varje sida om tidigare sida. Tidigare sida kan ligga i 5 steg frammår. Löser det genom att URL encoda föregående sidas sträng. Detta fungerar perfekt om jag använder asp:literal och skriver ut hela länken med använder jag asp:hyperlink så blir det fel när fler än 2 sidor ligger bakåt.

Kan man stänga av HTMLEncode på en enskild kontroll?
Eller ser ni någon annan lösning?

Vissa webcrawlers kan även att ha problem att tolka adressen rätt om tecknen görs om.

emissionMedlem sedan dec. 19996 095 inlägg
#2

Addeladde skrev:

Hej

ASP.NET har ju som standard att HTML encoda allt som skickas ut till de inbyggda kontrollerna. Om man har en asp:hyperlink och skickar ut en adress med en frågesträng så omvandlas t.ex. & till & I de allra felsta fall är detta ingen fara eftersom webbläsarna ändå hanterar det korrekt.

&-tecken i en href SKA skrivas &, så det är egentligen mer ett gammalt otyg att okodade &-tecken accepteras av webbläsarna.

Addeladde skrev:

Problemet är att jag skickar med en variabel på varje sida om tidigare sida. Tidigare sida kan ligga i 5 steg frammår. Löser det genom att URL encoda föregående sidas sträng.

Om du ser till att inte dubbelencoda på vägen (dvs. avkoda värdena innan du skickar med dem igen) så borde du inte få några problem.

AddeladdeMedlem sedan jan. 20012 997 inlägg
#3

Jag får problem på det trede steget.

backButton = server.UrlDecode(Request["backpage"]);
nextButton = "page.aspx?backPage=page.asp" + server.UrlEncode(Request["backpage"]));

Jag får problem på det trede steget. När jag klickar på tillbaka så funkar det men när jag trycker på tillbaka på sidan jag hamnade så får jag fel. Den har tagit bort backpage och ersatt det med ett komma tecken.

emissionMedlem sedan dec. 19996 095 inlägg
#4

Du ska inte UrlDecoda något från request "manuellt". Det görs ändå, per automatik. Det jag menade med att värden ska vara avkodade var att du inte ska hämta rå URL-data, vilket jag misstänkte att du gjorde.

AddeladdeMedlem sedan jan. 20012 997 inlägg
#5

Jag har testat att inte urldecoda också. Testade även att göra om alla länkar till literal och skriva ut dem själv men det funkar fortfarande inte. Jag har fått detta att fungera i traditionell asp men då har jag istället för URLencode Escapat backpage strängen.

Skumt att det inte fungerar. Jag fattar inte vad komma tecknet kommer ifrån.

AddeladdeMedlem sedan jan. 20012 997 inlägg
#6

Jag klickar på denna länk (visa källa på sidan):

CourseAddStudentFromClass.aspx?id=232&backPage=CourseAddStudents.aspx%3fid%3d232%26backPage%3dCourseHandleStudents.aspx%253fid%253d232%2526backPage%253dCourse.aspx%25253fid%25253d232

När jag kommit till den sidan och trycker på tillbaka med denna länk:

CourseAddStudents.aspx?id=232&backPage=CourseHandleStudents.aspx%3fid%3d232%26backPage%3dCourse.aspx%253fid%253d232

När jag kommit tillbaka så är tillbaka länken på den sidan följande:

CourseHandleStudents.aspx?id=232,Course.aspx?id=232

Går jag bakåt och UrlDecodar via denna webbplats så blir det rätt men inte i webbläsaren.

AddeladdeMedlem sedan jan. 20012 997 inlägg
#7

Löste det. Var en urldecode som spökade Men fortfarande inte fått det att fungera med en vanlig hyperlink.

emissionMedlem sedan dec. 19996 095 inlägg
#8

Kommatecknet kommer från det faktum att länken innehåller flera backPage-värden, som automatiskt konkateneras med komma av ASP.NET.

Jag misstänker att du missar att UrlEncoda någonstans på vägen.

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb