前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的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. Spring之旅(2)

    Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...

  2. 结巴分词3--基于汉字成词能力的HMM模型识别未登录词

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 算法简介 在 结巴分词2--基于前缀词典及动态规划实现分词 博 ...

  3. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  4. JS继承类相关试题

    题目一: //有关于原型继承的代码如下:function Person(name) {   this.name = name;}Person.prototype = {     getName : f ...

  5. JQuery(2)

    JQuery下拉框操作: 取值赋值操作 body代码: <select id="sel"> <option value="北京">北京& ...

  6. 【C#公共帮助类】 Utils 10年代码,最全的系统帮助类

    为大家分享一下个人的一个Utils系统帮助类,可能有些现在有新的技术替代,自行修改哈~ 这个帮助类主要包含:对象转换处理 .分割字符串.截取字符串.删除最后结尾的一个逗号. 删除最后结尾的指定字符后的 ...

  7. java时间

    Calendar.getInstance().getTime() 获取当前时间(包括星期和时区 CST China Standard Time):  Fri Jan 06 21:03:36 CST 2 ...

  8. Android中使用ViewFlipper实现屏幕页面切换(关于坐标轴的问题已补充更改)

    屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.如 ...

  9. FineReport如何部署Tomcat服务器集群

    环境准备 Tomcat服务器集群中需要进行环境准备: Apache:Apache是http服务器,利用其对Tomcat进行负载均衡,这里使用的版本是Apache HTTP Server2.0.64: ...

  10. Struts2数据校验

    Struts2数据校验 1.常见数据校验方法 表单数据的校验方式: 表单中的数据必须被效验以后才能够被使用,常用的效验方式分为两种: 前台校验:也称之为客户端效验,主要是通过JS编程的方式进行表单数据 ...