Виртуализировать ссылку в коде JQuery внутри внешнего JavaScript - PullRequest
0 голосов
/ 04 ноября 2010

Я использую следующую функцию для виртуализации пути и ссылки на ресурсы моего приложения

<%= Html.Image( Url.Content( "~/_assets/images/login.png" ), "Login" )%>

и это прекрасно работает при разрешении виртуального каталога, в котором развернуто приложение, например

http://someserver/xyz/_assets/images/login.png

как я могу достичь того же результата при указании ресурсов внутри CSS

body { background: #F4F4F4 url('/_assets/images/backgr_grad.png') repeat-x 0 0; }

а из функции javascript внутри внешнего файла js?

function loadCustomers() {
    $.ajax({
        type: "get",
        dataType: "html",
        url: '/Customers/AllCustomers',
        data: {},
        success: function(response) {
        }
    });
}

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

Из CSS вы всегда можете использовать относительные пути (в CSS это относительно местоположения файла CSS):

body { 
    background: #F4F4F4 url('../images/backgr_grad.png') repeat-x 0 0; 
}

Из JS есть разные методы, но одна состоит из определения глобальной переменной js в представлении:

<script type="text/javascript">
    var customersUrl = '<%: Url.Action("AllCustomers") %>';
</script>

, а затем используйте эту переменную во внешнем файле JavaScript:

function loadCustomers() {
    $.ajax({
        type: 'get',
        dataType: 'html',
        url: customersUrl,
        data: { },
        success: function(response) {
        }
    });
}

Другая техника предполагает прогрессивное улучшение:

<%: Html.ActionLink("Load customers", "AllCustomers", 
    null, new { id = "customersLink" }) %>

И в js постепенно улучшайте эту ссылку:

$(function() {
    $('#customersLink').click(function() {
        $.ajax({
            type: 'get',
            dataType: "html",
            url: this.href,
            success: function(response) {
            }
        });

        // make sure to cancel the default action
        return false;
    });
});
1 голос
/ 04 ноября 2010

Используйте относительный путь.Путь относительный к файлу CSS, не к странице.

...