Мені потрібно мати можливість отримати повну URL-адресу сторінки, на якій я перебуваю, з боку управління користувача. Це лише питання об'єднання групи змінних Request? Якщо так, то які? Або існує більш симпатичний спосіб?
Мені потрібно мати можливість отримати повну URL-адресу сторінки, на якій я перебуваю, з боку управління користувача. Це лише питання об'єднання групи змінних Request? Якщо так, то які? Або існує більш симпатичний спосіб?
Відповіді:
Зазвичай я використовую, Request.Url.ToString()
щоб отримати повну URL-адресу (включаючи рядок запитів), не потрібно з'єднання.
Request.Url.ToString()
не включає queryString.
Ось список, на який я зазвичай посилаюся для такого типу інформації:
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.QueryString
повертається q=qvalue
лише
Request.Url.AbsoluteUri
Ця властивість виконує все необхідне, все за один короткий дзвінок.
Для цього ASP.NET Core
вам потрібно буде прописати це:
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
Або ви можете додати до перегляду користувачу:
@using Microsoft.AspNetCore.Http.Extensions
тоді
@Context.Request.GetDisplayUrl()
Можливо, _ViewImports.cshtml
це буде кращим місцем для цього@using
Запит.RawUrl
якщо вам потрібна повна URL-адреса, як і все від http до рядка запитів, вам потрібно буде об'єднати наступні змінні
Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("QUERY_STRING")
Краще використовувати, Request.Url.OriginalString
ніж Request.Url.ToString()
(згідно MSDN )
OriginalString
.
Дякую, хлопці, я використовував поєднання обох ваших відповідей @Christian та @Jonathan для моєї конкретної потреби.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
Мені не потрібно турбуватися про безпечний http, потрібна змінна назва сервера, і RawUrl обробляє шлях від доменного імені та включає в себе рядок запитів, якщо така є.
Спробуйте наступне -
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();