私はかみそりのページのJavaScriptコードでサイトのルートURLを取得する必要があります。
...
var siteRootUrl = '@Url.Content("~")';
...
しかし、これから得られるのは「/」だけです。
ポート付きの現在のホストを取得するには(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")
AbsoluteUriを取得する最も簡単な方法は、
@Url.Action("", null, null, "http")
@Url.Content()
は、ドメインのルートからのパスであるルートRELATIVEパスを返します。
したがって、サイトがwww.foo.com/siteにある場合、Url.Content()は/ siteを返します
イシュマエルの応答は正しいです。完全なURLを解析する必要があります。
@ 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アラート
完全なURLを取得するには、@Request.Url.ToString()
を使用します。
それを解析するか、HttpRequest.Url
オブジェクトであるSystem.Uri
プロパティで他のメソッドのいずれかを使用できます。