source

ASP.Net: 시스템 사용.웹.UI.컨트롤.공유/정적 함수에서 Url() 확인

lovecheck 2023. 5. 22. 21:10
반응형

ASP.Net: 시스템 사용.웹.UI.컨트롤.공유/정적 함수에서 Url() 확인

As에서 공유/정적 함수에서 ResolveUrl()을 사용하는 가장 좋은 방법은 무엇입니까?넷? VB에 대한 현재 솔루션.순:

Dim x As New System.Web.UI.Control
x.ResolveUrl("~/someUrl")

또는 C#:

System.Web.UI.Control x = new System.Web.UI.Control();
x.ResolveUrl("~/someUrl");

하지만 저는 그것이 그것을 부르는 가장 좋은 방법이 아니라는 것을 깨달았습니다.

시스템을 사용합니다.Web.VirtualPathUtility.절대자에게.

비록 시스템이지만 주목할 가치가 있습니다.Web.VirtualPathUtility.ToAbsolute는 여기서 매우 유용하며 Control을 완벽하게 대체할 수 없습니다.Url을 확인합니다.

적어도 한 가지 중요한 차이점이 있습니다.통제.ResolveUrl은 쿼리 문자열을 매우 잘 처리하지만 VirtualPathUtility에서 HttpException을 발생시킵니다.이는 특히 컨트롤 방식에 익숙할 경우 처음 발생할 때 매우 혼란스러울 수 있습니다.ResolveUrl이 작동합니다.

사용할 쿼리 문자열의 정확한 구조를 알고 있는 경우 이 방법은 쉽게 해결할 수 있습니다.

public static string GetUrl(int id)
{
    string path = VirtualPathUtility.ToAbsolute("~/SomePage.aspx");
    return string.Format("{0}?id={1}", path, id);
}

...하지만 쿼리 문자열이 알 수 없는 소스에서 전달되는 경우에는 어떻게든 구문 분석해야 합니다. (너무 깊이 들어가기 전에 시스템을 참고하십시오.)URI가 당신을 위해 그것을 해줄 수 있을지도 모릅니다).

저는 HttpContext를 사용하는 편입니다.Current는 페이지를 가져온 다음 페이지/웹 제어 방법을 실행합니다.

언급URL : https://stackoverflow.com/questions/26796/asp-net-using-system-web-ui-control-resolveurl-in-a-shared-static-function

반응형