2011-06-28 17 views
6

Łańcuch adresu URL wygenerowany po tym pliku response.redirect powoduje ból głowy. Zastępuje znaki procentami kodowania url i dodaje dodatkowe katalogi plików.zatrzymaj odpowiedź. Kod pośredniczący od kodowania

Response.Redirect("TestingReport.aspx?id=" + Request.QueryString("id") + "&Test_Type_ID=" + Request.QueryString("Test_Type_ID") + "&TType=" + Request.QueryString("TType")) 

https://subdomain.domain.com/User%20Portal/Testing/%2fUser%2520Portal%2fTesting%2fTestingReport.aspx%3fid%3d8444%26Test_Type_ID%3d2%26TType%3dCore%20Mandatory%202

Dlaczego jest to zmienia? i = do kodów procentowych? Nie rozumiem, dlaczego dwa razy dołącza się Portal/Testowanie użytkownika.

Dzięki

Odpowiedz

2

To się nazywa URLEncoding. Kasa this online utility do dekodowania posiadanego ciągu znaków. W .NET można użyć kodu System.Web.HttpUtility do kodowania/dekodowania.

0

Upewnij się, że w adresie URL nie ma pustego miejsca.

0

Cały adres URL zostaje poddany ekodji, co prawdopodobnie wynika z tego, że nie jest to kodowanie wartości wprowadzanych do łańcucha. URL zakodować wartości poprawnie, a to powinno działać:

Response.Redirect(
    "TestingReport.aspx?id=" + Server.UrlEncode(Request.QueryString("id")) + 
    "&Test_Type_ID=" + Server.UrlEncode(Request.QueryString("Test_Type_ID")) + 
    "&TType=" + Server.UrlEncode(Request.QueryString("TType")) 
) 
0

chcieć zbudować ciąg kwerendy niezależnie od metody linii przekierowywać URL kodują te wartości, a następnie HTML zakodować URL przekazany do response.redirect

Próbka pokazana na witrynie MSDN. Podejrzewam, że twoje operacje konkatenacji powodują w jakiś sposób kodowanie URL-a całego obiektu, a nie tylko jego wartości.

<% 

dim QS

qs = Server.URLEncode(Request.Querystring) 

Response.Redirect "newpage.asp?" + Server.HTMLEncode(qs) 
%> 

http://msdn.microsoft.com/en-us/library/ms524309.aspx

+0

Nie, cały łańcuch zapytania nie powinien być zakodowany za pomocą adresu URL, tylko wartości lub będziesz kodował separatory '& '. Ponadto ciąg kwerendy nie powinien być kodowany w HTML. Jest to używane, gdy umieścisz URL w atrybucie w kodzie HTML, a następnie cała wartość atrybutu powinna być zakodowana w HTML, a nie tylko ciąg zapytania. – Guffa

0

Wyjazd this post. Zasadniczo .Net próbuje oczyścić adres URL i zmylić. Rozwiązaniem jest ręczne kodowanie.

Powiązane problemy