Can't get site root url in asp mvc

天大地大妈咪最大 提交于 2020-01-10 11:57:46

问题


I need to get site root url in razor page in javascript code:

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

But all I get from this is '/'.


回答1:


To get the current host with port (mysite.com, www.mysite.com or localhost:9876)

 Request.Url.Authority

To get your current application folder: (/ or /appfolder/)

 Url.Content("~/")

To mix them?

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

OR (As torm pointed out)

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

To generate an Action URL:

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



回答2:


Easiest way I know to get AbsoluteUri would be

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



回答3:


@Url.Content() returns the root RELATIVE path, that is the path from the root of the domain.

So if your site was at www.foo.com/site then Url.Content() returns /site

Ishmael's response is correct. You will need to parse a full url.




回答4:


The @Url.Content is returning the relative URL which is correct. The following code gives you various option in getting a URL realtive via code, absolute Url via code, absolute via 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>

You will get something like:

Site 'Relative Url = '/' Site 'Absolute Url = 'http://localhost:14763/'

and also the JS alert showing the href/absolute Url




回答5:


For the full URL, use @Request.Url.ToString().

You can either parse that, or use one of the other methods on the HttpRequest.Url property, which is a System.Uri object.

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



来源:https://stackoverflow.com/questions/9121140/cant-get-site-root-url-in-asp-mvc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!