2016-10-17 13 views
2

私はasp.net MVCアプリケーションを持っており、特定のファイルにアクセスするリモートアドレスを取得したいと思います。私のIMGタグでServer.MapPath(〜)代替

、私はこの場合、<img src="~/Content/img/logo.svg"/>

のとおり

~/を使用しています、チルダは解釈されます。

しかし、私はこのように、ジャバスクリプトを経由してタグを作成したい:

var $state = $(
    '<span><img src="~/Content/img/bancos/' + state.element.value.toLowerCase() + '.png" class="img-banco" /> ' + state.text + '</span>' 
); 

チルダが、この場合には解釈されません。

どのような方法を使用できますか?

var $state = $(
    '<span><img src="@Server.MapPath(~)/Content/img/bancos/' + state.element.value.toLowerCase() + '.png" class="img-banco" /> ' + state.text + '</span>' 
); 

をしかし、これはE:\inetpub\...

答えて

-1

私は約@Hrefを発見し、期待どおりに働きました!

var $state = $(
    '<span><img src="@Href("~/Content/img/bancos/")' + padder.pad(state.element.value) + '.png" class="img-banco" /> &nbsp; ' + state.text + '</span>' 
); 
1

Server.MapPathが物理ディレクトリへのパスを返すように、サーバーにアプリケーションフォルダを返します。

私はこれを試してみました。アプリケーションルート(または画像)への相対URLが必要です

ヘルパーメソッドを使用して剃刀ビューでルートに値を生成し、それをjs変数に格納して使用する必要があります。必ずjavascriptの名前空間使用はシナリオだからあなたのレイアウトファイルまたはビュー

<script> 
    var myApp = myApp || {}; 
    myApp.Urls = myApp.Urls || {}; 
    myApp.Urls.baseUrl = '@Url.Content("~")';   
</script> 
<script src="~/Scripts/PageSpecificExternalJsFile.js"></script> 

そして、あなたの外部のJavaScript(PageSpecificExternalJsFile.js)ファイル内を上書きするグローバル変数の値を避けるために、あなたはそれが好きで読むことができます。

var imageLocation= myApp.Urls.baseUrl+'Content/img/bancos/hi.jpg'; 
// use this imageLocation now 
+0

デバッグ時に、私はこれを得ました: 'myApp.Urls.baseUrl ="/"' – Phiter

+0

はい。それはアプリのルート(相対パス)です。あなたのjsコードは、現在のページで動作するはずです。それをベースURLとして使用し、残りの部分を追加してください。 – Shyju

+1

'Content'の前にスラッシュを削除していました。 – Phiter

0

は、私が何を探していることであると信じている。私はそれはあなたのコードに直接適用されるかどうかを知りドント

src="@Url.Content(string.Format("~/Content/img/bancos/{0}.png", state.element.value.toLowerCase()))" 

が、私はそこにあなたを取得します@ Url.Contentと信じています。

よろしく、