문제

사용자 컨트롤에서 현재 페이지의 전체 URL을 얻을 수 있어야 합니다.단지 여러 개의 요청 변수를 함께 연결하는 문제일까요?그렇다면 어느 것입니까?아니면 더 간단한 방법이 있습니까?

도움이 되었습니까?

해결책

나는 보통 사용한다 Request.Url.ToString() 전체 URL(쿼리 문자열 포함)을 얻으려면 연결이 필요하지 않습니다.

다른 팁

다음은 이러한 유형의 정보에 대해 일반적으로 참조하는 목록입니다.

Request.ApplicationPath :   /virtual_dir
Request.CurrentExecutionFilePath :  /virtual_dir/webapp/page.aspx
Request.FilePath :  /virtual_dir/webapp/page.aspx
Request.Path :  /virtual_dir/webapp/page.aspx
Request.PhysicalApplicationPath :   d:\Inetpub\wwwroot\virtual_dir\
Request.QueryString :   /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.AbsolutePath :  /virtual_dir/webapp/page.aspx
Request.Url.AbsoluteUri :   http://localhost:2000/virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Host :  localhost
Request.Url.Authority : localhost:80
Request.Url.LocalPath : /virtual_dir/webapp/page.aspx
Request.Url.PathAndQuery :  /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Port :  80
Request.Url.Query : ?q=qvalue
Request.Url.Scheme :    http
Request.Url.Segments :  /
    virtual_dir/
    webapp/
    page.aspx

이 내용이 도움이 되기를 바랍니다!

Request.Url.AbsoluteUri

이 속성은 한 번의 간결한 호출로 필요한 모든 작업을 수행합니다.

요청.RawUrl

http부터 쿼리 문자열까지 전체 URL이 필요한 경우 다음 변수를 연결해야 합니다.

Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME") 
Request.ServerVariables("SCRIPT_NAME") 
Request.ServerVariables("QUERY_STRING")

을 위한 ASP.NET Core 철자를 써야 합니다:

@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")

또는 뷰에 using 문을 추가할 수 있습니다.

@using Microsoft.AspNetCore.Http.Extensions

그 다음에

@Context.Request.GetDisplayUrl()

그만큼 _ViewImports.cshtml 그러기엔 더 좋은 곳일지도 몰라 @using

사용하는 것이 더 좋습니다 Request.Url.OriginalString ~보다 Request.Url.ToString() (에 따르면 MSDN)

감사합니다. 저는 특정 요구에 맞게 @Christian과 @Jonathan의 답변을 조합하여 사용했습니다.

"http://" + Request.ServerVariables["SERVER_NAME"] +  Request.RawUrl.ToString()

보안 http에 대해 걱정할 필요가 없으며 servername 변수가 필요하고 RawUrl은 도메인 이름의 경로를 처리하고 쿼리 문자열이 있는 경우 포함합니다.

포트 번호도 필요한 경우 다음을 사용할 수 있습니다.

Request.Url.Authority

예:

string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();

if (Request.ServerVariables["HTTPS"] == "on")
{
    url = "https://" + url;
}
else 
{
    url = "http://" + url;
}

다음을 시도해 보세요 -

var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top