web-dev-qa-db-ja.com

ASP MVCでサイトのルートURLを取得できません

私はかみそりのページのJavaScriptコードでサイトのルートURLを取得する必要があります。

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

しかし、これから得られるのは「/」だけです。

28
1110

ポート付きの現在のホストを取得するには(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("~/"))

または(tormが指摘したように)

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

アクションURLを生成するには:

 Url.Action("About","Home",null,"http")
56
Nick Bork

AbsoluteUriを取得する最も簡単な方法は、

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

@Url.Content()は、ドメインのルートからのパスであるルートRELATIVEパスを返します。

したがって、サイトがwww.foo.com/siteにある場合、Url.Content()は/ siteを返します

イシュマエルの応答は正しいです。完全なURLを解析する必要があります。

2

@ Url.Contentは正しい相対URLを返しています。次のコードは、コードを介してURLを現実的に、コードを介して絶対URLを、JavaScriptを介して絶対的にURLを取得するためのさまざまなオプションを提供します。

<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>

次のようなものが得られます:

サイト '相対URL ='/'サイト'絶対URL = 'http:// localhost:14763 /'

また、href /絶対URLを示すJSアラート

1
Glav

完全なURLを取得するには、@Request.Url.ToString()を使用します。

それを解析するか、HttpRequest.UrlオブジェクトであるSystem.Uriプロパティで他のメソッドのいずれかを使用できます。

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

0
Ishmael Smyrnow