前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的demo玩玩,可是礼拜六被妹子拽出去玩了一天,来大上海有大半年了,基本没有出去玩过,妹子说我是超级宅男,也不带她出去走走,妹子毕业后从大东北来到上海陪我一起打拼,想想蛮对不起她的。周六一天玩的很充实,走了很多路(一个星期的路都在这一天走完了),看了很多风景,回来洗个澡睡得很舒服,第二天也很清醒,其实除了写代码和玩游戏,发现双休出去走走真的挺不错的。附上几张图片,希望大家有时间多出去走走,也许有意外的收获啊!

星期天在家没事做,早上八点多就起来做点早饭送妹子上班去,回来就开始撸起代码,发现早上起来撸点代码,一天头脑都很清醒。

首先之前写过一个demo读取xml配置文件并装配到dictionary(key,value)中。这次让它在实际场景中发挥点作用,前面提到过支付宝的多语言切换功能,接下来我们就看怎么将他们联系起来并实现—基于Asp.net MVC的用户信息中英文切换功能。

1.定义xml文件相关节点

1.1 Ch_UserInfo.xml文件。

 <?xml version="1.0" encoding="utf-8" ?>
<roots>
<data name="Language">
<value>语言:</value>
</data>
<data name="UserNo">
<value>用户序号:</value>
</data>
<data name="UserName">
<value>用户姓名:</value>
</data>
<data name="UserAge">
<value>用户年龄:</value>
</data>
<data name="Hobby">
<value>兴趣爱好:</value>
</data>
<data name="Country">
<value>国家:</value>
</data>
<data name="CardID">
<value>身份证号:</value>
</data>
<data name="Gender">
<value>性别:</value>
</data>
</roots>

1.2 En_UserInfo.xml文件。

 <?xml version="1.0" encoding="utf-8" ?>
<roots>
<data name="Language">
<value>Language:</value>
</data>
<data name="UserNo">
<value>UserNo:</value>
</data>
<data name="UserName">
<value>UserName:</value>
</data>
<data name="UserAge">
<value>UserAge:</value>
</data>
<data name="Hobby">
<value>Hobby:</value>
</data>
<data name="Country">
<value>Country:</value>
</data>
<data name="CardID">
<value>CardID:</value>
</data>
<data name="Gender">
<value>Gender:</value>
</data>
</roots>

2.定义一个读取config文件的类库-NickZhao

 public class NickZhao
{
public static string GetConfig(string str, bool Flags = true)
{
string value = string.Empty;
Dictionary<string, string> dic = new Dictionary<string, string>(); dic=Flags==true?GetXml("Ch"):GetXml("En"); if (dic.ContainsKey(str))
{
foreach (KeyValuePair<string, string> kv in dic)
{
if (kv.Key == str)
{
value = kv.Value;
break;
}
}
}
else
{
value = str;
}
return value;
} public static Dictionary<string, string> GetXml(string str)
{
string filePath = string.Empty;
Dictionary<string, string> dic = new Dictionary<string, string>(); filePath = System.Web.HttpContext.Current.Server.MapPath(string.Concat("", "Xml/" + str + "_UserInfo.xml")); if (System.IO.File.Exists(filePath))
{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(filePath);
XmlNodeList nodes = XmlDoc.SelectNodes("roots/data");
foreach (XmlNode node in nodes)
{
string key = node.Attributes["name"].Value.ToString();
string value = node.SelectSingleNode("value").InnerText;
dic.Add(key, value);
}
}
return dic;
}
}

3.创建一个UserController和一个UserInfo Model

 public class UserController : Controller
{
//
// GET: /User/ public ActionResult Index(bool flags=true)
{
UserInfo userInfo = new UserInfo() { UserNo=,UserAge=,UserName="李伟",Gender="男",CardID="",Country="中国",Hobby="听歌,打篮球,游泳"};
if (!flags)
{
ViewData["Flags"] = false;
}
return View(userInfo);
} } public class UserInfo
{
public int UserNo { get; set; } public string UserName { get; set; } 25 public int UserAge { get; set; } 27 public string Country { get; set; } public string Gender { get; set; } public string Hobby { get; set; } public string CardID { get; set; } }

4.给UserContoller创建一个对应的view

 @model MvcAjaxTest.Models.UserInfo
@{ bool Flags = true;
if (@ViewData["Flags"] != null)
{
Flags=(bool)@ViewData["Flags"];
}
}
<link rel="stylesheet" type="text/css" href="~/Content/css/bootstrap.css" />
<script src="~/Scripts/jquery-1.8.2.js"></script>
<script type="text/javascript">
$(function () {
if ("@Flags"=="True") {
$("#language").attr("value", "Chinese");
}
else {
$("#language").attr("value", "English");
}
}); function Change() { var selectedLanguage = $("#language option:selected").val();
if (selectedLanguage == "English") { window.location.href = "@Url.Action("Index", "User")?Flags=" + false;
}
else
{
window.location.href = "@Url.Action("Index", "User")?Flags=" + true;
}
}
</script> <div style="margin-left:820px">
<label for="name">@MvcAjaxTest.NickZhao.GetConfig("Language", Flags)</label>
<select class="form-control" id="language" onchange="Change()" style="width:110px">
<option value="Chinese">中文</option>
<option value="English">English</option>
</select>
</div>
<div id="part">
<input type="text" id="Test"/>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("UserNo", Flags)</label>&nbsp;&nbsp;<span>@Model.UserNo</span>
<label>@MvcAjaxTest.NickZhao.GetConfig("UserName", Flags)</label>&nbsp;&nbsp;<span>@Model.UserName</span>
</div>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("UserAge", Flags)</label>&nbsp;&nbsp;<span>@Model.UserAge</span>
<label>@MvcAjaxTest.NickZhao.GetConfig("Hobby", Flags)</label>&nbsp;&nbsp;<span>@Model.Hobby</span>
</div>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("Country", Flags)</label>&nbsp;&nbsp;<span>@Model.Country</span>
<label>@MvcAjaxTest.NickZhao.GetConfig("CardID", Flags)</label>&nbsp;&nbsp;<span>@Model.CardID</span>
</div>
<div class="form-control">
<label>@MvcAjaxTest.NickZhao.GetConfig("Gender", Flags)</label>&nbsp;&nbsp;<span>@Model.Gender</span>
</div>
</div>

5.效果:

做得有点简陋。望不吝赐教!

读取xml数据装配到字典中之应用场景的更多相关文章

  1. 读取xml数据装配到字典中

    public Dictionary<string, string> GetXml() { Dictionary<string, string> dic = new Dictio ...

  2. XML序列化器读取XML数据

    PS:标题我还真的不知道该怎么取比较好,大家将就下吧^_^ 场景:上周接到一个任务,要求我把ASP写的会员充值功能,用ASP.NET复制一遍,没有给我需求文档,就是让我根据代码去分析业务逻辑,然后看到 ...

  3. 用php读取xml数据

    parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签. 读取数据.结束标签. 也就是说在对xml进行处理的时候每当遇到起始标签.数据和结束标签的时候函数会做相应的动作 ...

  4. wcf序列化大对象时报错:读取 XML 数据时,超出最大

    错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...

  5. InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)

    WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formD ...

  6. Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法

    1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反 ...

  7. 读取 XML 数据时,超出最大字符串内容长度配额 (8192)

    格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://www.thermo.com/informatics/xmlns/limswebservice 进行反序列化时出错: Process ...

  8. 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大

    当遇到这个错误的时候郁闷了好长时间报错是字符串长度过大可是修改了MaxStringContentLength”属性的值却不起作用最后才发现还是因为配置文件配置的问题在服务端 格式化程序尝试对消息反序列 ...

  9. (转)读取XML数据到treeView中

    原文地址,只为收藏:http://www.cnblogs.com/ylwn817/archive/2011/12/15/2288512.html /// <summary>        ...

随机推荐

  1. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  2. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

  3. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

  4. 深入浅出JavaScript之原型链&继承

    Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...

  5. C++的内存泄漏检测【转载】

    原文地址: http://www.cnblogs.com/jily/p/6239514.html

  6. SAP CRM 树视图(TREE VIEW)

    树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view) ...

  7. 【SAP业务模式】之ICS(六):发票输出类型

    这篇开始主要讲述发票输出类型: 首先我们新建一个发票类型,用于公司间的发票MIV,而标准的发票类型还是F2保持不变: 一.新建发票类型: 目录:SPRO-销售与分销-出具发票-开票凭证-定义出具发票类 ...

  8. Supermap iCloudManager -负载均衡

    Supermap icm负载均衡理解: 应用场景:地图出图 子节点1和子节点2中的服务保持一致,一般情况下设置的是匿名用户通过nginx访问服务信息,所以不需要登录. 1.通过nginx分发请求,(轮 ...

  9. 解决 Could not find com.android.tools.build:gradle 问题

    今天拉同事最新的代码,编译时老是报如下错误: Error:Could not find com.android.tools.build:gradle:2.2.0.Searched in the fol ...

  10. a标签绝对定位,点击区域被图片遮挡(IE下)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...