前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的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. 移动端IOS点击事件失效解决方案

    解决方案 解决办法有 4 种可供选择: 1 将 click 事件直接绑定到目标元素(即 .target)上 2 将目标元素换成 <a> 或者 button 等可点击的元素 3 将 clic ...

  2. RxJS + Redux + React = Amazing!(译二)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...

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

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

  4. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  5. iOS开发 适配iOS10

    2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操作系统iOS 10将正式上线. 作为开发者,如何适配iOS10呢? 1.Notification(通知) 自从Notificat ...

  6. 解决:win10_x64 VMware Workstation and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware Workstation

    bcdedit /set hypervisorlaunchtype off A reboot of of the Windows OS is necessary  必须重启才能生效   To enab ...

  7. Mysql - 游标/动态sql/事务

    游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...

  8. MySQL ALTER命令

    当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本文教程前让我们先创建一张表,表名为:testalter_tbl. root@host# mysql -u r ...

  9. 解决 Error: getaddrinfo EADDRINFO 错误

    安装npm失败,提示Error: getaddrinfo EADDRINFO,原因在于虚拟机未连接互联网,悲剧.

  10. [模拟电路] 2、Passive Band Pass Filter

    note: Some articles are very good in http://www.electronics-tutorials.ws/,I share them in the Cnblog ...