Каков альтернативный вариант для получения текущего URL-адреса в Asp. net core View - PullRequest
0 голосов
/ 07 августа 2020

В настоящее время я переношу MVC Project на Asp. Net Core Project, где на странице макета я использовал один фрагмент кода для получения текущего базового URL-адреса.

например: Если я запустил * Приложение 1024 * размещено на сервере IIS, затем я использовал виртуальный каталог для приложения MVC, как показано ниже:

https://mydomain/myMVCApplication/Login

Затем, используя приведенный ниже код, я могу получить URL-адрес до виртуального телефонная книга

https://mydomain/myMVCApplication/

 var baseUrl = @Html.Raw(System.Web.HttpUtility.JavaScriptStringEncode(new Uri(new Uri(this.Context.Request.Url.GetLeftPart(UriPartial.Authority)), Url.Content("~/")).ToString(), true));

Но при миграции в asp. net основное представление, тогда здесь Context.Request.Url, где URL не является свойством Context.Request.

Предложите здесь исправить указанную выше проблему и получить тот же результат.

Ответы [ 3 ]

1 голос
/ 09 августа 2020

В приложении Asp. net Core вы можете попытаться получить URL-адрес, используя класс Microsoft.AspNetCore.Http.HttpRequest или Microsoft.AspNetCore.Http.Extensions. Затем, используя ViewData, чтобы сохранить URL-адрес в методе действия и отобразить URL-адрес на странице просмотра.

  1. Используйте Microsoft.AspNetCore.Http.HttpRequest class

         ViewData["Message"] = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";
    

    или

         ViewData["Message"] = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.Path}";
    
  2. Используйте Microsoft.AspNetCore.Http.Extensions

    Используя следующий код:

         var displayUrl = UriHelper.GetDisplayUrl(Request);
         var urlBuilder =
         new UriBuilder(displayUrl)
         {
             Query = null,
             Fragment = null
         };
         string url = urlBuilder.ToString();
         ViewData["Message"] = url;
    

Код на странице просмотра:

@{ 
    if (ViewData["Message"] != null)
    {
        @ViewData["Message"]
    }; 
} 
0 голосов
/ 07 августа 2020

Вы можете использовать это

@{
var baseUrl = HttpContext.Request.IsHttps ? $"https://{HttpContext.Request.Host}" : $"http:{HttpContext.Request.Host}"
}
0 голосов
/ 07 августа 2020

Вы можете попробовать этот Microsoft.AspNetCore.Http.Extensions.UriHelper.GetFullUrl (Request)

...