2011-08-12 8 views
1

다음 형식의 queryparam이있는 하이퍼 링크가 있습니다.하이퍼 링크 '?' 탈출

<a href="<%= Url.Content("~/Search/Results/" + 
     ViewData["SearchID"] + "?listingID=" + 
     ViewData.Model.ListingID) %>"> 
    See more 
</a> 

페이지의 소스에서 잘 보이지만 클릭하면 끝납니다 :

http://localhost/{Site}/Search/Results/30%3FlistingID=2 

ActionLink 도우미 :

<%= Html.ActionLink("See more", "Results", "Search", 
     new { 
      id = ViewData["SearchID"], 
      listingID = ViewData.Model.ListingID 
     }, null) %> 

이 작업과 관련된 특정 경로를 등록 해 보았습니다.

URL이 생성 된 페이지 소스에서 제대로 표시되는 이유는 정말 당황 스럽지만 그렇지 않습니다. 한 번 클릭하면 실제 요청 URL에. 어떤 입력?

수정 url이 생성 된 페이지의 소스에 제대로 표시됩니다.

<a href="/[SITE]/Search/Results/30?listingID=2">See more</a> 

위의 URL을 주소 표시 줄에 수동으로 입력하면 충분히 이상하게 작동합니다. 정말 당황 스러웠다.

두 번째 EDIT

URL 문제가 진짜 이유는 내가 오류가 있어요 :

최종 편집

문제. 요청은 https에서 http로 이루어졌으며 URL이 http로 다시 쓰여지는 대상 컨트롤러에 속성이 있습니다. /FacePalm

+0

'Html.ActionLink'를 사용할 때 어떤 일이 발생합니까? 나는 이것을 많은 곳에서 사용하며 결코 문제가 없었습니다. –

+0

'우리'란 무엇입니까? –

+0

@Ronald : ActionLink를 사용할 때 동일한 하이퍼 링크 경로를 얻을 수 있지만 링크를 따라 가면 "http : // localhost/[SITE]/Search/Results/30 % 3FlistingID = 2"와 같은 결과가 표시됩니다. 주소 표시 줄. –

답변

0

URL이 "?" uri로 인코딩 된 값 : % 3F. 이 문제가 발생하는 이유는 문자열이 암호화되어 있기 때문입니다. 물음표를 벗어나야합니다.

+0

이것은 HTML로 인코딩 된 값이 아닙니다. URI로 인코딩 된 값입니다. –

+0

네 말이 맞아. 대답에서 그것을 바꿉니다. :) – evasilchenko

+0

이제는 기본적으로 "인코딩되기 때문에 인코딩 중입니다"라고 말하면서 적절한 해결책을 제시하지 못합니다.:) –

0

UrlHelper.Content는 모든 것이 프로토콜, 호스트 및 경로라고 가정하고 있으며 실제로 쿼리 변수를 사용하지 않습니다.

UriBuilder가 도움이 될 수 있습니다.

+0

페이지의 소스에 제대로 표시되므로 링크를 생성하는 것과 관련이없는 것 같습니다. See more

+0

@Casey : 그건 불가능합니다. –

+0

@Tomalak : 어느 부분? 페이지 URL이 페이지 소스에 올바르게 표시됩니다. 더 직접적으로 잘못된 것을 가지고 싶지만 ... –