2013-04-18 37 views
16

コンテンツフォルダ内のファイルの絶対パスを取得するには、asp.net mvcビューに簡単な方法(組み込み)がありますか?コンテンツのファイルの絶対パスを取得

現時点では私は

@Url.Content("~/Content/images/logo.png") 

を使用しています。しかし返されるパスは絶対的ではありません。

私はそれがこのような場合のために、独自のヘルパーを構築することが可能であるが、私は任意の簡単な方法がありますかどうかを知りたいのですが...

+0

http://stackoverflow.com/a/1268755/802791 –

+0

[ASP.NET MVC - コントローラからのApp \ _Dataフォルダへの絶対パスの検索](http://stackoverflow.com/questions/1268738)/asp-net-mvc-find-absolute-path-to-the-app-data-folder-from-controller) –

+0

私は電子メールを送信するためにシステムをオンラインにしているときにチェックする必要があります。 明日お知らせします。 ありがとうございます。 – mosquito87

答えて

1
HttpContext.Current.Server.MapPath("~/Content/images/logo.png"); 
+0

C:\ Users \ ... \ Projects \ ... \ Content \ images \ logo.png http:// localhost:57001/Content/images私が本当に必要とするものは次のとおりです。 /logo.png(開発環境) と http://www.mydomain.com/Content/images/logo.png(生産的な環境) – mosquito87

+3

@ mosquito87あなたの質問が書かれた方法から、実際にはありませんでしたあなたが何を望んでいるのかがはっきりしているので、答えはあなたが書いたものに関して正しいものでした。そういうわけで、私はそれが得たすべての下の票に値するとは思わない。 – jahu

+0

ダング、あなたは彼をそこに持っています:彼は、ウェブ開発が何であるかを知っている質問を読んでいる人々の状況に頼っていました。 – Josiah

5

Url.Contentは絶対パスを返しません知っています。あなたが望むのは、ドメイン(およびポート)です。

Request.Url.Authority 

この文字列を画像の絶対パス文字列と組み合わせて使用​​すると、現在のドメインを取得できます。 ドメイン名が返され、別のポートにある場合はポート番号も含まれます。

+2

また、スキームを追加する必要があります。次のようにしてください:string.Format( "{0}:// {1} {2}"、Request.Url.Scheme、Request.Url.Authority、Url.Content( "〜/ Content/images/logo.png" )) – vfportero

24

これは私の作品:

ヘルパー:CSHTMLで

using System; 
using System.Web; 
using System.Web.Mvc; 

public static class UrlExtensions 
{ 
    public static string Content(this UrlHelper urlHelper, string contentPath, bool toAbsolute = false) 
    { 
     var path = urlHelper.Content(contentPath); 
     var url = new Uri(HttpContext.Current.Request.Url, path); 

     return toAbsolute ? url.AbsoluteUri : path; 
    } 
} 

使用法:

@Url.Content("~/Scripts/flot/jquery.flot.menuBar.js", true) 

// example output: 
// http://example.com/directory/Scripts/flot/jquery.flot.menuBar.js 
+0

いいね(Y)ありがとう。 – Orhaan

11

これは、イメージ(またはファイル)への絶対URLを生成します

Request.Url.Scheme + "://" + Request.Url.Authority + Url.Content("~/Content/images/logo.png") 
+0

ありがとう、私は最後の1時間のための良い解決策を探してきました。あなたの作品は素晴らしいです。 –

1
new Uri(Request.Url, Url.Content("~/Content/images/logo.png")) 

これは、Uriの.ToString()を呼び出します。 Uriを変数に入れ、.AbsoluteUriを呼び出すこともできます。

関連する問題