zoukankan      html  css  js  c++  java
  • Javascript下调用.Net资源文件,实现语言国际化

    大家都知道,要在.Net下实现国际化是很简单的事,只需添加一个 App_GlobalResources 目录和相应的资源文件(.resx),然后就可以直接调用了,如现有一资源文件名为: Admin.resx,其中有一个叫 Title 的键值,这时在页面只需直接使用

    string title = Resources.Admin.Title;


    但如果想在JS里也使用此资源文件,要如何处理呢?其实也很简单,只需使用AJAX调用后台获取资源文件即可,以下就使用jQuery + ASP.NET MVC为例实现在JS下直接调用资源文件的方法(当然你也可以直接使用传统的JS AJAX方法获取)

    先创建获取资源文件的函数:

    代码
        //使用键值方式获取资源文件,其中 category 即资源文件名
        Resource = function (category, key) {
           
    //使用jQuery的 ajax 直接获取相应的资源文件
            var rtnvalue =
            $.ajax({
                type: 
    "POST",
                dataType: 
    "json",
                data: {
                    
    "category": category,
                    
    "key": key
                },
                url: 
    "/GetResource",
                async: 
    false
            }).responseText;
            
    //返回 json 数据
            var rtnvalue = $.parseJSON(rtnvalue);

            
    if (!rtnvalue.MsgType)
                
    return "No Resource File!";
            
    else
                
    return rtnvalue.Content;
        }


    接下来要实现服务器端的代码了:

    代码
    public ActionResult GetResource(FormCollection collection)
    {            
                
    //此为自定义信息返回类,方便返回相应的ajax结果
                Message msg = new Message();

                
    //调用 ResourceManager 以获取相应的资源文件
                ResourceManager rm = (ResourceManager)System.Type.GetType
                    (
    "Resources." + collection["category"]).GetProperty("ResourceManager"
                    BindingFlags.Static 
    | BindingFlags.NonPublic).GetValue(nullnull);
                msg.Content 
    = rm.GetString(collection["key"]) ?? "";
               
                
    //由于我用的是ASP.NET MVC,所以直接使用 Json(obj) 返回即可
                return Json(msg);
    }


     Ok,万事具备啦,现在可以直接调用了,在JS里如要显示以上 Title 的语言,就可以使用以下代码调用:

    alert(Resource("Admin""Title"));
    //or 
    var title = Resource("Admin""Title");


    这样就可以在JS里轻松实现语言国际化效果了!

  • 相关阅读:
    ScrollView下嵌套GridView或ListView默认不在顶部的解决方法
    Hdu5303 Delicious Apples 贪心
    javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
    unable to execute dex: multiple dex files Cocos2dxAccelerometer
    Unity游戏小地图生成
    LeetCode Spiral Matrix II
    <九度 OJ>题目1012:畅通project
    cpu信息
    挖一挖不经常使用到而又非常有用的重载-Split
    hdu1501 Zipper--DFS
  • 原文地址:https://www.cnblogs.com/winsonet/p/1779631.html
Copyright © 2011-2022 走看看