2010-06-10 16 views
2

Le contrôle Literal fonctionne tout le tempsPeut-on utiliser Resource Expressions dans javascript et d'autres parties sauf Literal?

<asp:Literal ID="Literal7" runat="server" 
    Text="<%$ Resources:ErrorMessages, errorCompanyNotFound %>" /> 

Mais si je veux l'utiliser comme un paramètre dans une image, comme

<img src="blahblah" alt="" 
    title"<%$ Resources:ErrorMessages, errorCompanyNotFound %>" /> 

Il donne l'erreur ennuyeux

Les expressions littérales comme '' ne sont pas autorisées. Utilisez à la place.

de même si je tente d'y accéder via Javascript

var noHit = '<%$ Resources:ErrorMessages, errorCompanyNotFound %>'; 

Quelqu'un a une idée comment puis-je récupérer la valeur des ressources mondiales dans ce cas?

Répondre

3

La seule façon que je pouvais trouver pour fonctionner correctement était d'utiliser une méthode publique à la place de l'appel <%$.

dans le code derrière j'ai fait:

public string GetResource(string ResourceName, string ResourceKey) 
{ 
    string r = HttpContext.GetGlobalResourceObject(ResourceName, ResourceKey) as string; 
    if (r == null) 
     return ResourceKey; 
    return r; 
} 

était alors aussi facile que l'appeler:

<img src="blahblah" alt="" 
    title"<%= GetResource("ErrorMessages", "errorCompanyNotFound") %>" /> 

et

var noHit = '<%= GetResource("ErrorMessages", "errorCompanyNotFound") %>'; 

J'espère que cela aide quelqu'un comme moi:)

+5

En fait, vous pouvez simplement utiliser la méthode intégrée 'GetGlobalResourceObject' à la place de votre méthode personnalisée. Si vous avez Resharper 5, il vous donnera même l'intelligence. – Greg

+0

Cela ne fonctionnera que si vous intégrez tout le javascript qui doit être localisé dans votre page ASPX qui pour diverses raisons, performances, réutilisation, etc. n'est pas idéal. Si vous utilisez des fichiers .js, vous aurez besoin d'une autre solution. –

+0

@Heliar ce que je fais est d'avoir une zone '