2016-10-17 4 views
2

У меня есть приложение asp.net MVC, и я хочу получить удаленный адрес для доступа к определенному файлу.Server.MapPath (~) alternative

В моих IMG теги, я использую ~/

По <img src="~/Content/img/logo.svg"/>

В этом случае, тильда будет интерпретироваться.

Но я хочу, чтобы создать тег с помощью JavaScript, например:

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

. Я удалил косую черту перед «Контент», и она сработала. – Phiter

0

Я считаю, что то, что вы ищете:

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

Я не знаю, если это относится непосредственно к коду, но я считаю, что @ Url.Content получит вас там.

С уважением,