MVC3 проблема с изображением JavaScript - PullRequest
1 голос
/ 04 января 2012

У меня есть веб-приложение C # .Net MVC3.В определенном js-файле я загружаю диалоговое окно и присваиваю свойство loading: изображению ниже

loading: $('<img src="../../Content/Images/loading.gif" alt="loading" class="ui-loading-icon">'),

Однако в других средах оно не находит изображение.Код в этих случаях должен быть

loading: $('<img src="../../../Content/Images/loading.gif" alt="loading" class="ui-loading-icon">'),

Я пытался

loading: $('<img src="@Href("~/Content/Images/loading.gif")" alt="loading" class="ui-loading-icon">'),

И также пытался

loading: $('<img src="@Url.Content("~/Content/Images/loading.gif")" alt="loading" class="ui-loading-icon">'),

Ни один не работал .... когда я использовал@ Url.Content и @Href в файлах aspx, это работает.

Нет необходимости говорить, что я не эксперт по javaScript, но я полагаю, что это должно быть выполнимо в файле js.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 04 января 2012

Обычно я обхожу это путем создания вспомогательной функции на главной странице или странице макета:

Поместите это на страницу макета под ссылкой на jquery, но над любым другим файлом, который будет его использовать:

// This adds the helper onto the jQuery object rather than just being global
$.getUrl = function (path) {
     return '@Url.Content("~")' + path;
};

Затем используйте это в своем файле js:

$('<img src="' + $.getUrl('/Content/Images/loading.gif') + '" />')
2 голосов
/ 04 января 2012

Как сказал Ричард Д, вы не можете запускать код .NET в файле javascript. Возможный обходной путь - сохранить путь изображения в скрытом поле в вашем представлении, а затем получить его из файла javascript.

Просмотр файла:

<input type="hidden" id="image-path" value="@Url.Content("~/Content/Images/loading.gif")" />

JS файл:

var imagePath = $("#image-path").val();
loading: $('<img src="' + imagePath + '" alt="loading" class="ui-loading-icon">'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...