Utilisez une variable qui stockait le chemin d'image dans URL.
-
29-10-2019 - |
Question
J'ai utilisé une fonction pour construire un chemin d'image dynamiquement comme ceci:
function () {
var name = $(this).attr('id') + '_o';
var newsrc = '../../Content/HomePage/' + name + '.png';
Et je veux affecter le newsrc en utilisant Razor Url. à une balise d'image comme source. Donc, je souhaite faire quelque chose comme ça:
$(this).attr('src', '@Url.Content(newsrc)');
Mais vs me montre la ligne rouge en disant que le newrc n'existe pas dans le contexte actuel. Comment puis-je utiliser une variable avec URL.Content?
(Remarque: j'utilise cette balise de script à l'intérieur ...)
EDIT: Une idée me vient à l'esprit, peut-être que la porte dérobée passera le NewsRc au contrôleur, utilise URL.Content là-bas pour résoudre l'URL et la transmettre? Est-ce possible?
Toute aide serait appréciée..
La solution 3
Problème résolu par mon aîné. Je crée des appsettings supplémentaires dans web.config (un webDirectory) puis attribue la valeur comme chemin de dossier.
Ensuite, à mon code, je peux facilement construire mon URL en utilisant:
System.Configuration.ConfigurationManager.AppSettings["WebDirectory"].ToString()...
Partagez simplement ma solution ici, j'espère que cela aidera quelqu'un à l'avenir. Merci.
Autres conseils
Lorsque j'utilise cette technique pour envoyer le chemin à la variable JavaScript, il me montre -1 au lieu du chemin. Le code est comme ci-dessous.
var path= <%= ConfigurationManager.AppSettings["FileManager"] %>;
Vous essayez de passer directement une variable JavaScript à ASP.NET Code - ce qui est impossible.
Vous devrez supprimer le @Url.Content()
Et utilisez simplement le chemin relatif dans votre javascript:
$(this).attr('src', newsrc);
Ou alternativement, utilisez le Url.Content()
Pour obtenir l'emplacement du dossier et ajoutez le nom de fichier en javascript, comme ceci:
var name = $(this).attr('id') + '_o';
var newsrcFolder = '@Url.Content('../../Content/HomePage/')';
var newsrc = newsrcFolder + name + '.png';
$(this).attr('src', newsrc);