В предыдущих версиях asp.net мы могли использовать
@Request.Url.AbsoluteUri
Но, похоже, все изменилось. Как мы можем сделать это в asp.net core 1.0?
asp.net-core
asp.net-core-mvc
asp.net-core-1.0
oneNiceFriend
источник
источник
Ответы:
Вы должны получить хост и путь отдельно.
источник
@
между двумя струнами? не могли бы вы это объяснить?@HttpContext
вместо@Context
. Для частичных просмотров@Context
работает. Я забыл об использовании?Url.Action("Action", null, null, Request.Url.Scheme);
stackoverflow.com/questions/434604/…Вам нужна схема, хост, путь и queryString
или используя новую функцию C # 6 «Строковая интерполяция»
источник
Вы можете использовать метод расширения
Request
:источник
@using Microsoft.AspNetCore.Http.Extensions
затем@Context.Request.GetDisplayUrl()
Suitable only for display. This format should not be used in HTTP headers or other HTTP operations.
исходя из этого, я думаю, что решение @tmg является лучшим (возможно, заключенным в ваш собственный метод расширения).Очевидно, это всегда было возможно в .net core 1.0 с
Microsoft.AspNetCore.Http.Extensions
, которое добавляет расширениеHttpRequest
для получения полного URL-адреса; GetEncodedUrl .например, с точки зрения бритвы:
Начиная с версии 2.0, также есть относительный путь и запрос GetEncodedPathAndQuery .
источник
Используйте свойство AbsoluteUri Uri, с ядром .Net вы должны создать Uri из запроса, подобного этому,
например, если URL-адрес запроса - http://www.contoso.com/catalog/shownew.htm?date=today , будет возвращен тот же URL-адрес.
источник
Вы можете использовать этот метод расширения (из
Microsoft.AspNetCore.Http.Extensions
пространства имен:Для некоторых моих проектов я предпочитаю более гибкое решение. Есть два метода расширения.
1) Первый метод создает
Uri
объект из данных входящего запроса (с некоторыми вариантами через необязательные параметры). 2) Второй метод получаетUri
объект и возвращаетstring
в следующем формате (без косой черты в конце): Scheme_Host_PortИспользование:
источник
источник
httpContext
? Это не сработает,Microsoft.AspNetCore.Http.HttpContext.Request
Если вы хотите также получить номер порта из запроса, вам потребуется получить к нему доступ через
Request.Host
свойство AspNet Core.Request.Host
Свойство не просто строка , но, вместо этого, объект , который содержит как домен хоста и номер порта. Если номер порта специально выписал в URL (то есть"https://example.com:8080/path/to/resource"
), то вызовRequest.Host
даст вам домен хоста и номер порта , как так:"example.com:8080"
.Если вам нужно только значение для хост-домена или значение только для номера порта, вы можете получить доступ к этим свойствам индивидуально (например,
Request.Host.Host
илиRequest.Host.Port
).источник
Принятый ответ помог мне, как и комментарий к нему от @padigan, но если вы хотите включить параметры строки запроса, как это было со мной, попробуйте следующее:
И вам нужно будет добавить
@using Microsoft.AspNetCore.Http.Extensions
в представление, чтобы метод GetEncodedPathAndQuery () был доступен.источник
Существует простой способ получить текущий URL-адрес со страницы Razor или класса PageModel. То есть:
Обратите внимание, что я имел в виду « страницы Razor ASP.NET Core », а не MVC.
Я использую этот метод, когда хочу напечатать метатег канонического URL-адреса на страницах с бритвой ASP.NET Core. Но есть загвоздка. Он предоставит вам URL-адрес, который должен быть правильным URL-адресом для этой страницы. Позволь мне объяснить.
Скажем, вы определили для своей страницы маршрут с именем "id" и, следовательно, ваш URL-адрес должен выглядеть так:
Url.PageLink () даст вам именно тот URL, как показано выше.
Теперь, если пользователь добавляет что-нибудь дополнительно к этому URL-адресу, скажем,
Тогда вы не получите этого "чего-то другого" из этого метода. И именно поэтому он идеально подходит для печати метатега канонического URL-адреса на странице HTML.
источник