Je souhaite utiliser la ressource globale dans mon code javascript. Normalement, lorsque le code est dans le code ASP, j'utilise <%=GetGlobalResourceObject("Resource", "MONTHS_SHORT1") %>
et cela fonctionne. Mais, lorsque le code javascript n'est pas dans le code ASP, par exemple dans un dossier comme calendar.js, cela ne fonctionne pas. Comment puis-je utiliser la ressource globale dans ce cas? Remarque: Le fichier de ressources se trouve dans mon dossier App_GlobalResources.Utilisation de la ressource globale dans JavaScript
Répondre
Regardez le post suivant, je créé qui décrit comment vous pouvez serialise ressources mondiales et locales et les récupérer à partir de JavaScript en utilisant jQuery et JSON.
http://bloggingdotnet.blogspot.com/2010_02_01_archive.html
Tout d'abord, créez un nouveau fichier de gestionnaire (de .ashx). Celui-ci a été écrit il y a quelque temps, donc utilise sérialisation JSON vb.net et personnalisé:
Imports System.Web
Imports System.Web.Services
Imports System.Xml
Imports System.Resources
Imports System.Reflection
Public Class Localisation
Implements System.Web.IHttpHandler
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim files As String = context.Request.QueryString("files")
Dim local As String = context.Request.QueryString("local")
Dim isLocal As Boolean
Dim folder As String = "App_GlobalResources"
context.Response.ContentType = "text/javascript"
'Write out file as object
context.Response.Write("{")
'Determine if local resource file
If local IsNot Nothing Then
isLocal = CBool(local)
If isLocal Then folder = "App_LocalResources"
End If
If files Is Nothing OrElse files.Length = 0 Then Throw New ArgumentException("Parameter 'files' was not provided in querystring.")
Dim flag As Boolean = False
For Each file As String In files.Split(",")
If flag Then context.Response.Write(",")
Dim className As String = file.Split(".")(0)
'Write the class (name of the without any extensions) as the object
context.Response.Write(className)
context.Response.Write(":{")
'Open the resx xml file
Dim filePath As String = context.Server.MapPath("~\" & folder & "\" & file)
Dim document As New XmlDocument()
Dim flag2 As Boolean = False
document.Load(filePath)
Dim nodes As XmlNodeList = document.SelectNodes("//data")
For Each node As XmlNode In nodes
'Write out the comma seperator
If flag2 Then context.Response.Write(",")
Dim attr As XmlAttribute = node.Attributes("name")
Dim resourceKey As String = attr.Value
context.Response.Write(resourceKey)
context.Response.Write(":""")
'Write either the local or global value
If isLocal Then
context.Response.Write(HttpContext.GetLocalResourceObject(String.Format("~/{0}", file.Replace(".resx", "")), resourceKey)) 'Has to be full path to the .aspx page
Else
context.Response.Write(HttpContext.GetGlobalResourceObject(className, resourceKey))
End If
context.Response.Write("""")
'Flag that we need a comma seperator
flag2 = True
Next
context.Response.Write("}")
flag = True
Next
'End file
context.Response.Write("}")
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return True
End Get
End Property
End Class
Quand cela fonctionne, utilisez le code jQuery suivant pour effectuer un appel ajax au gestionnaire http et retourner le contenu le fichier de ressources en tant que littéral d'objet.
// -- Localisation --
var localResources;
var globalResources;
//Sample JSON for javascript resource values eg {TrackDetail:{HideHelp:"Hide Help", ShowHelp:"Show Help"}}
//Usage e.g: alert(localResources.TrackDetail.HideHelp);
//Load Localisation values into variables so that they can be available on the client
//Note that these values are loaded asynchronously, the code in the function will not run until the call has completed.
$.getJSON('Localisation.ashx?files=TrackDetail.aspx.resx&local=true', function(data) { localResources = data});
$.getJSON('Localisation.ashx?files=Errors.resx,Strings.resx', function(data) { globalResources = data});
Vous devez générer du code JavaScript qui imite les ressources dont vous avez besoin, car ASP.NET s'exécute côté serveur et JavaScript s'exécute côté client.
<script language="javascript" type="text/javascript">
var MONTHS_SHORT1 = <%=GetGlobalResourceObject("Resource", "MONTHS_SHORT1") %>;
</script>
J'utilise souvent un littéral caché pour contenir le texte des ressources puis saisissez le texte localisé en utilisant javascript et jquery:
<asp:Literal runat="server" ID="Literal1" visible="false" Text="<%$ Resources:String, MyResourceText%>" />
<input type="button" id="Button1" value="" />
<script type="text/javascript">
$(document).ready(function() {
// Update the buton text with the correct localised lookup
var ButtonText = '<%=Literal1.Text%>';
$("#Button1").attr('value', ButtonText);
});
</script>
Cela enregistrera la clé des ressources.
ClientScriptManager cs = Page.ClientScript;
String scriptRegVariables = string.Format("var resourcetext = '{0}'", Resources.Resource.keyText);
if (!cs.IsClientScriptBlockRegistered("RegVariablesScript"))
{
cs.RegisterClientScriptBlock(typeof(_Default), "RegVariablesScript", scriptRegVariables, true);
}
Maintenant dans le fichier .js, vous pouvez l'utiliser directement. par exemple. Alerte (resourcetext);
Ajoutez le code ci-dessus sur Page_Load of control ou aspx page
- 1. Ressource globale et ressource locale dans ASP.NET
- 2. La ressource de disque globale devient indisponible
- 3. Utilisation d'une variable globale en javascript
- 4. Instance globale dans javascript prototypique
- 5. Définir la chaîne de ressource dans javascript
- 6. Utilisation correcte de la variable globale ruby $ *
- 7. Javascript: Variable globale dans la fonction
- 8. Utilisation de la valeur globale ruby dans le fichier YAML
- 9. Javascript variable globale question
- 10. JavaScript: portée globale
- 11. JavaScript consignation globale
- 12. variable globale en javascript?
- 13. javascript variable globale
- 14. Javascript variable globale
- 15. Modification de la valeur de la variable javascript globale
- 16. Utilisation d'une ressource HTTPS dans Yahoo Pipes?
- 17. Variable globale JavaScript (changement de valeur)
- 18. modifier l'étendue de la fonction globale en javascript
- 19. ressource de résultat MySQL après la première utilisation
- 20. Utilisation d'un nom de ressource dans les rails 3
- 21. Utilisation d'une variable globale dans une bibliothèque partagée
- 22. Utilisation d'une image de ressource dans le code derrière
- 23. Utilisation de ternary dans JavaScript
- 24. Javascript variable globale ne fonctionne pas correctement?
- 25. Javascript: $$ Variable globale considérée comme mauvaise?
- 26. Javascript redéclaré variable globale remplace ancienne valeur
- 27. utilisation de la mémoire de classe JavaScript
- 28. WPF - Utilisation d'une ressource ControlTemplate dans un style
- 29. Utilisation d'une ressource d'image dans un balisage XAML?
- 30. Comment utiliser la ressource incorporée dans ASP.Net?