无法在asp mvc中获取站点根URL

时间:2012-02-02 22:45:21

标签: javascript asp.net-mvc asp.net-mvc-3 razor

我需要在javascript代码中的razor页面中获取网站根网址:

...
var siteRootUrl = '@Url.Content("~")';
...

但我得到的只是'/'。

5 个答案:

答案 0 :(得分:54)

使用端口获取当前主机(mysite.com,www.mysite.com或localhost:9876)

 Request.Url.Authority

获取当前的应用程序文件夹:(/或/ appfolder /)

 Url.Content("~/")

混合它们?

 String.Format("{0}://{1}{2}",Request.Url.Scheme, Request.Url.Authority,Url.Content("~/"))

OR(正如torm指出的那样)

 Url.Action("", null, null, Request.Url.Scheme)
 Url.Action("", null, null, "http")
 Url.Action("", null, null, "https") 

生成操作网址:

 Url.Action("About","Home",null,"http")

答案 1 :(得分:8)

我知道获得AbsoluteUri的最简单方法是

@Url.Action("", null, null, "http")

答案 2 :(得分:2)

@Url.Content()返回根RELATIVE路径,即路径根目录的路径。

因此,如果您的网站位于www.foo.com/site,则Url.Content()会返回/ site

伊斯梅尔的回答是正确的。您需要解析一个完整的URL。

答案 3 :(得分:1)

@ Url.Content返回正确的相对URL。 以下代码为您提供了各种选项,通过代码获取URL,绝对Url通过代码,绝对通过javascript:

<div>Site 'Relative Url = '@Url.Content("~")'</div>
<div>Site 'Absolute Url = '@System.Web.HttpContext.Current.Request.Url.AbsoluteUri'</div>

<script type="text/javascript">
    alert("site URL via js = " + location.href);
</script>

你会得到类似的东西:

网站'相对网址='/' 网站'Absolute Url ='http:// localhost:14763 /'

以及显示href / absolute Url的JS警告

答案 4 :(得分:0)

要获取完整网址,请使用@Request.Url.ToString()

您可以解析它,也可以使用HttpRequest.Url属性上的其他方法之一,即System.Uri个对象。

http://msdn.microsoft.com/en-us/library/system.uri.aspx