Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在Asp.net核心视图中获取当前Url的替代方法是什么_Asp.net Mvc_Asp.net Core - Fatal编程技术网

Asp.net mvc 在Asp.net核心视图中获取当前Url的替代方法是什么

Asp.net mvc 在Asp.net核心视图中获取当前Url的替代方法是什么,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,我目前正在将MVC项目迁移到Asp.Net核心项目,在布局页面中,我使用了一段代码来获取当前的基本url e、 g:如果我运行托管在IIS服务器中的MVC应用程序,那么我使用虚拟目录来创建MVC应用程序,如下所示: https://mydomain/myMVCApplication/Login 然后在视图中使用下面的代码,我可以得到虚拟目录的Url https://mydomain/myMVCApplication/ var baseUrl=@Html.Raw(System.Web.HttpU

我目前正在将MVC项目迁移到Asp.Net核心项目,在布局页面中,我使用了一段代码来获取当前的基本url

e、 g:如果我运行托管在IIS服务器中的MVC应用程序,那么我使用虚拟目录来创建MVC应用程序,如下所示:

https://mydomain/myMVCApplication/Login

然后在视图中使用下面的代码,我可以得到虚拟目录的Url

https://mydomain/myMVCApplication/

var baseUrl=@Html.Raw(System.Web.HttpUtility.JavaScriptStringEncode(新Uri(新Uri(this.Context.Request.Url.GetLeftPart(UriPartial.Authority)),Url.Content(“~/”)).ToString(),true))您可以试试这个
Microsoft.AspNetCore.Http.Extensions.UriHelper.GetFullUrl(请求)

您可以使用此

@{
var baseUrl = HttpContext.Request.IsHttps ? $"https://{HttpContext.Request.Host}" : $"http:{HttpContext.Request.Host}"
}

在Asp.net核心应用程序中,您可以尝试使用
Microsoft.AspNetCore.Http.HttpRequest
类或
Microsoft.AspNetCore.Http.Extensions
获取URL。然后,使用ViewData在action方法中存储URL,并在View页面上显示URL

  • 使用
    Microsoft.AspNetCore.Http.HttpRequest

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

  • 使用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"]
        }; 
    } 
    

    双引号内的大括号格式不正确。请修改您的代码并提供。我正在使用带$的字符串插值,大括号应该可以工作,您可以粘贴您面临的错误吗?当我使用建议的代码时,我发现HttpContext类中存在编译错误。我在视图顶部添加了reference inject Microsoft.AspNetCore.Http.ihttppcontextaccessor HttpContextAccessor,然后像这样使用:var baseUrl=HttpContextAccessor.HttpContext.Request.IsHttps$“https://{HttpContext.Request.Host}”:$“http:{HttpContext.Request.Host}”和获取控制台错误:意外字符串。这段代码是我在javascript中使用的。请检查。Request.Host仅提供域名,不提供域和虚拟目录。使用Request.Host和Request.PathBase按预期提供正确的结果。此处的Request是什么?请解释。获取编译错误:UriHelper不包含GetFullUrl的定义。this.Request.PathBase使用此命令完成了工作。我正在获取具有虚拟目录的域。
    @{ 
        if (ViewData["Message"] != null)
        {
            @ViewData["Message"]
        }; 
    }