Помощник URL в JavaScript

Я использую Лайтбокс jQuery для своей галереи изображений.
URL для изображения кнопки'../../Content/Lightbox/lightbox-btn-next.gif'
Это хорошо работает, если мой URL'localhost/Something1/Somtehing2'
Если я использую другой маршрут как'localhost/Something1/Something2/Something3'затем URL к изображениям кнопки является неправильным.
Я могу использовать Url.Action() внутри файлы .js?
Это - то, как я называю .js файлы:

<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery.lightbox-0.5.js") %>"></script>
8
задан user2428118 9 October 2012 в 14:45
поделиться

2 ответа

Вы не можете использовать Url.Action() внутри .js файлов. Но вы можете определить глобальную переменную и использовать ее в js файле.

<script type="text/javascript">

    var imageUrl = "<%= ... %>";

</script>
5
ответ дан 5 December 2019 в 10:02
поделиться

Я предпочитаю извлекать URL-адреса из тегов 'href's or form' action или какого-либо другого элемента, который имеет смысл.

<img class="_click" src="<%= Url.Content("~/my/image.png") %>" alt="Click" />

И в моем javascript (дважды проверьте это на jQuery, я не уверен, что это точный синтаксис.):

var url = $('._click').attr('href');
// To pass these to your plugin as options
// see lightbox source for a full list
$('a').lightBox({ imageLoading : url })

Еще один немного менее предпочтительный вариант - добавить ваши настройки поверх вашего файла:

<script type="text/javascript"><![CDATA[
    $('a').lightBox({ imageLoading : <%= Url.Content("~/my/image.png") %> })
//]]></script>

Я сказал «менее предпочтителен», потому что этот подход смешивает разметку и код.

Еще один подход (который требует серьезной очистки) - предоставить вам js-файл с контроллера:

public ActionResult GetFileContent(string filename)
{
    // important: make sure to control the path for security
    var path = Server.MapPath("~/Scripts/" + filename);
    var content = System.IO.File.ReadAllText(path);

    // Use some kind of template convention
    content = content.Replace("{{IMAGE_PATH}}", Url.Content(@"~/my/image.png"));

    var bytes = new UTF8Encoding().GetBytes(content);
    return new FileContentResult(bytes, "text/javascript");
}
0
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: