ASP .NET RazorでWEBサイトのベースURLと物理パスを取得する

● ASP .NET RazorでWEBサイトのベースURLを取得する

引用 : https://www.wareko.jp/blog/post-21910

your-view-file.cshtml

@{
 var baseUrl = ""
            + Request.Url.Scheme + "://" 
            + Request.Url.Authority 
            + Request.ApplicationPath.TrimEnd('/'); 
}
@baseUrl/controller/method

http://localhost:49983/controller/method

と表示されます。

コントローラーから ViewData で渡す場合は
YourController.cs

string BASE_URL = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd( '/' );
ViewData["BASE_URL"] = BASE_URL;

your-view-file.cshtml

@ViewData["BASE_URL"]/controller/method

で渡します。

● .NET MVC で物理パスを取得するには Request を使用します。

Razorテンプレート内では @Request.ApplicationPath のように直接記述することができます。

<table>
    <tr><td>Request.ApplicationPath</td><td>@Request.ApplicationPath</td></tr>
    <tr><td>Request.FilePath</td><td>@Request.FilePath</td></tr>
    <tr><td>Request.Path</td><td>@Request.Path</td></tr>
    <tr><td>Request.FilePath</td><td>@Request.FilePath</td></tr>
    <tr><td>Request.PathInfo</td><td>@Request.PathInfo</td></tr>
    <tr><td>Request.PhysicalApplicationPath</td><td>@Request.PhysicalApplicationPath</td></tr>
    <tr><td>Request.PhysicalPath</td><td>@Request.PhysicalPath</td></tr>
    <tr><td>Request.RawUrl</td><td>@Request.RawUrl</td></tr>
    <tr><td>Request.Url</td><td>@Request.Url</td></tr>
</table>

例えば

http://localhost:49983/Debug/Url 

へのアクセスは

Request.ApplicationPath/
Request.FilePath/Debug/Url
Request.Path/Debug/Url
Request.FilePath/Debug/Url
Request.PathInfo
Request.PhysicalApplicationPathC:\my_dir\MY-PROJECT\PROJECT\
Request.PhysicalPathC:\my_dir\MY-PROJECT\PROJECT\Debug\Url
Request.RawUrl/Debug/Url
Request.Urlhttp://localhost:49983/Debug/Url

のような表示になります。

No.1246
06/14 15:00

edit