2009-01-31 5 views
4
있도록 나는 키/값 쌍은 동적으로 URL에 추가 내 페이지의 링크를 생성 할

:기존 URL 문자열에 키/값을 추가하는 가장 좋은 방법은 무엇입니까?

Default.aspx?key1=value1

가되다 :

Default.aspx?key1=value1&key2=value2

기존 쿼리가 URL의 키를 유지하도록합니다. 또한 키가없는 경우 '?'과 함께 키가 추가됩니다.

이 작업을 수행하는 논리를 쉽게 작성할 수 있지만이 프레임 워크는 유용성이 있어야합니다. 거기에 대한 내 자신의 논리를 작성하지 않고 쿼리 문자열에 키를 추가하는 방법이 있습니까?

답변

5

, 그것은이 이상하다 .NET Framework에서 제대로 지원되지 않습니다. extensions to UriBuilder 한 쌍이 당신이 필요로하는 것을 할 것입니다.

+0

그냥 내가 필요한 것, 감사합니다. UriBuilder에는 이상한/예기치 않은 동작이 있지만 이러한 확장 메서드는 내가 원하는대로 작업하고 예상대로 작동했습니다. –

0

나는 항상 스스로 생성 해 왔습니다.

string url = Request.UrlReferrer.PathAndQuery; 

(url[url.Length - 1] != '?' ? "?" : "&") + Url.Encode(key) + "=" + Url.Encode(key) 
  • Url.Encode는 ASP.NET MVC
+0

참고로 'END'가 '?'인 경우에만 코드가 작동합니다. 캐릭터. 내 질문에 준 예제는 해당 코드에서 작동하지 않습니다. 또 다른 '?' 문자를 URL에 추가하십시오. –

+0

업데이트했습니다. 시도 해봐. – ajma

3

당신은 UriBuilder 클래스를 사용할 수있는 무언가이다. Query property 설명서의 예를 참조하십시오. FWIW, ASP.NET MVC에는 UrlHelper 클래스가 포함되어 있습니다.이 클래스는 MVC 프레임 워크에서 이와 같은 작업을 수행합니다. 사전을 가져와 주어진 요청과 사전 값을 기반으로 적절한 URL을 반환하는 HttpRequest 클래스에 확장 메서드를 추가하는 방법에 대해 생각해 볼 수 있습니다. 이렇게하면 한 번만 작성하면됩니다.

+0

'builder.Query + = "hello = world"'와 같은 일을 할 때 조심하십시오. UriBuilder가 추가로 제공하는 것 같습니다. + =를 사용할 때마다 구분 기호. –

0

ASP.NET MVC 프레임 워크 릴리스를 사용하는 경우이를 수행 할 수있는 TabBuilder 객체가 있다고 생각합니다. 그렇지 않으면 UriBuilder를 사용할 수 있지만 여전히 구문 분석을해야합니다. 이 약간의 유틸리티 클래스뿐만 아니라 온라인,하지만 난 그렇게 나는 그들이 어떻게 작동하는지 잘 모르는 그들을 사용한 적이 :

관련 문제