2010-11-04 13 views
0

J'utilise la fonction suivante au chemin virtualiser et référence à mes ressources d'applicationVirtualiser un lien dans le code jQuery dans un javascript externe

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

et cela fonctionne très bien dans la résolution du répertoire virtuel dans lequel l'application a été déployé, par exemple

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

comment puis-je obtenir le même résultat en pointant vers des ressources dans un CSS

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

et à partir d'une fonction de javascript dans un fichier externe js?

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

Pouvez-vous pas utiliser des chemins relatifs à l'intérieur du CSS et les fichiers JS? – sheikhomar

+0

@sheikhomar: voulez-vous dire les chemins relatifs à la position de la masterpage où le css et le js sont inclus? – Lorenzo

Répondre

2

De CSS, vous pouvez toujours utiliser des chemins relatifs (en CSS, il est par rapport à l'emplacement du fichier CSS):

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

De JS il existe différentes techniques mais consiste à définir une variable js globale dans la vue :

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

puis utiliser cette variable dans le fichier javascript externe:

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

Une autre technique consiste à l'amélioration progressive:

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

Et js progressivement améliorer ce lien:

$(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

Utilisez un chemin relatif. Le chemin est relatif au fichier CSS, pas la page.