一起谈.NET技术,asp.net程序来读取多语言版本Ini配置文件

  这是asp.net程序来读取多语言版本Ini配置文件的开发示例,主要分为以下三个部分:

  1、 Ini 配置文件

  2、 读取Ini配置文件的DLL

  3、 Web页面调用与内容显示

  4、 数据库表T_User,如右图 

  首先说明一下Ini 文件格式:如下图其中[M_Index]节点和该节点下的所有的key和value,其中[M_Index]节点的名称是对应开发示例中的每个页面所在的文件夹名称的第一个字母加下划线再加该页面的名称组合而成,如 M_Index 则表示Manager文件夹下面有一个Index.aspx 页面,这样就避免了不同文件夹里面有相同页面而导致页面内容显示的问题,其中的key对应页面变量value对应页面显示的内容。

  上图的解决方案中DLL文件夹中ConfigureManager.dll 就是读取Ini 配置文件的一个封装类,提供方法来获取某个节点里面指定key的value。

  新建项目 

  准备工作好了以后,下面就开始新建一个项目,打开VS 新建一个项目并命名为“LanVersionSwitch”。

  1. 新建一个文件夹DLL 添加现有项把ConfigureManager.dll 添加进来,并添加引用该dll

  2. 新建文件夹INI添加现有项把ConfigCn.ini和ConfigEn.ini 加进来

  3.在web.config 中添加配置信息:

Web.config


<appSettings>
<add key="filePathEn" value="INI/ConfigEn.ini"/>
<add key="filePathCn" value="INI/ConfigCn.ini"/>
</appSettings>

  4.新建文件夹Common 并添加一个类LanSwitch.cs来调用dll方法进行再次封装以供web页面调用:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ConfigureManager;
using System.Web.Caching;

namespace LanVersionSwitch.Common
{
public class LanSwitch
{

private static readonly object obj = new object();

public static string GetValue(string section, string key, string lan)
{
string filePath;
if(HttpContext.Current.Cache[section + "_" + key + "_" + lan] == null)
{
lock (obj)
{
if (HttpContext.Current.Cache[section + "_" + key + "_" + lan] == null)
{
if (lan.ToUpper() == "EN")
{
filePath =Environment.CurrentDirectory + "/" +
System.Configuration.ConfigurationManager.AppSettings["filePathEn"].ToString();
}
else
{
filePath = Environment.CurrentDirectory + "/" +
System.Configuration.ConfigurationManager.AppSettings["filePathCn"].ToString();
}
ManagerConfigIni mi = new ManagerConfigIni(filePath);
HttpContext.Current.Cache.Add(section + "_" + key + "_" +
lan, mi.GetIniKeyValueForStr(section, key), null, DateTime.Now.AddSeconds(5),
TimeSpan.Zero, CacheItemPriority.Normal, null);
}
}
}
return HttpContext.Current.Cache[section + "_" + key + "_" + lan].ToString();
}
}
}

LanSwitch

  5.在Common文件夹增加DataAccess.cs 用来访问数据库,判断登录用户名和密码以及修改语言版本。

  6.新建页面Login.aspx如下图:                      

  7.新建文件夹Manager 并添加web页面Index.aspx 如下图

 

  8.在Manager 文件夹里面新建PersonalSet.aspx 如下图:

  9.在Login.aspx 页面登录按钮进行登录判断,代码

Title


protected void Button1_Click(object sender, EventArgs e)
{
DataAccess da = new DataAccess();
DataSet ds=da.Login(this.TextBox1.Text, this.TextBox2.Text);
if (ds.Tables[0].Rows.Count>0)
{
Session["lan"] = ds.Tables[0].Rows[0]["lan"];
Session["username"] = ds.Tables[0].Rows[0]["username"];
Response.Redirect("Manager/Index.aspx");
}
else
{
this.Label3.Text = "登录失败";
}
}

  10.Index.cs 的代码:             


private string path_page = "M_Index";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetValue();
}
}
private void SetValue()
{
string lan = Session["lan"].ToString();
this.Button3.Text = LanSwitch.GetValue(path_page, "menu1", lan);
this.Button4.Text = LanSwitch.GetValue(path_page, "menu2", lan);
this.Button5.Text = LanSwitch.GetValue(path_page, "menu3", lan);
this.Button6.Text = LanSwitch.GetValue(path_page, "menu4", lan);
this.Button7.Text = LanSwitch.GetValue(path_page, "menu5", lan);
this.Button8.Text = LanSwitch.GetValue(path_page, "menu6", lan);

}

Title

  11.PersonalSet.cs 的代码:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using LanVersionSwitch.Common;

namespace LanVersionSwitch.Manager
{
public partial class PersonalSet : System.Web.UI.Page
{
private string path_page = "M_PersonalSet";
DataAccess da = new DataAccess();

protected void Button1_Click(object sender, EventArgs e)
{
if (this.RadioButton1.Checked)
{
Session["lan"] = "CN";
}
else
{
Session["lan"] = "EN";
}
da.UpdateLan(Session["lan"].ToString(),Session["username"].ToString());
SetValue();
}
private void SetValue()
{
string lan = Session["lan"].ToString();
this.RadioButton1.Text = LanSwitch.GetValue(path_page,"radio1" , lan);
this.RadioButton2.Text = LanSwitch.GetValue(path_page, "radio2", lan);
this.Button1.Text = LanSwitch.GetValue(path_page, "save" , lan);
this.Button2.Text = LanSwitch.GetValue(path_page, "return", lan);
if (lan == "EN")
{
this.RadioButton1.Checked = false;
this.RadioButton2.Checked = true;
}
else
{
this.RadioButton1.Checked = true;
this.RadioButton2.Checked = false;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetValue();
}
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("Index.aspx"); } }}

 

  12.从以上的代码图可以看到 SetValue() 主要是页面调用LanSwitch.cs 的方法GetValue(string pagename,string key,string lan)来进行页面内容显示,

其中每个页面的pagename 都是有当前页面所在文件夹第一个字母加”_”再加当前页面的名称组成。

  总结:到这里,已经可以生成并运行代码看下运行结果,一个简单的多语言版本切换程序就写好了。

读取Ini 配置文件的一个封装类,提供方法来获取某个节点里面指定key的value,以下是DLL 下载地址:

/Files/xiaogelove/ConfigureManager.rar 

时间: 2024-10-26 06:44:43

一起谈.NET技术,asp.net程序来读取多语言版本Ini配置文件的相关文章

asp.net程序来读取多语言版本Ini配置文件

这是asp.net程序来读取多语言版本Ini配置文件的开发示例,主要分为以下三个部分: 1. Ini 配置文件 2. 读取Ini配置文件的DLL 3. Web页面调用与内容显示 4. 数据库表T_User,如右图 首先说明一下Ini 文件格式:如下图其中[M_Index]节点和该节点下的所有的key和value,其中[M_Index]节点的名称是对应开发示例中的每个页面所在的文件夹名称的第一个字母加下划线再加该页面的名称组合而成,如 M_Index 则表示Manager文件夹下面有一个Index

一起谈.NET技术,.NET程序员必备参考图片

昨天我讲到对.NET Framework的一点理解,今天又有所收获,马上来和大家分享.大家平时大都是参考MSDN,其实这足够了,那么我今天要分享的是什么呢?大家平时用过多少namespace?或者说用过多少FCL?我本人喜欢更加直观的图片,所以找到了FCL的图片.哈哈,比较壮观!这是.NET Framework 3.5的FCL概念图,囊括了几乎所有FCL,我想可以做个桌面背景,或是打出来贴墙上,用过那些可以标记上,看看你最后能学到多少?可以到Microsoft下载PDF版和打印版.   这张是.

开始你的第一个多语言版本的dotNET 应用程序(WinForm篇)

程序 多语言版本的应用程序曾是一个门槛,迈过去意味着它可以面对更多的使用者.对于商业程序来说一个本地化的版本意味着可能打开一个更大的市场.中文版也曾是我们心中有关中国软件的一个情结和期望.希望dotNET能给我们带来一些不同的观点和变革,让我们重新看待自己的每一个软件应用.在这里我避免涉及另外两个话题:Localizing和Globalization ,其一那是很大的话题,其二就目前看来它们已经成为软件工业中一个重要的环节,也有一整套专业的流程和作法. dotNET中的Resource比起以前可

一起谈.NET技术,提高ASP.NET应用程序性能的十大方法

一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量. 如果你是用动态的SQL语句来返回多个数据集,那我建议你用存储过程来替代动态的SQL语句.是否把业务逻辑写到存储过程中,这个有点争议.但是我认为,把业务逻辑写到存储过程里面可以限制返回结果集的大小,减小网络数据的流量,在逻辑层也不用在过滤数据,

请大家集体帮我把,这涉及到我的前程 :我今天下午2点要去面试Asp.Net程序员,他可能问到:我给你个网站你会怎么去做(要求独立去做,业务也是自己和客户谈),请有经验的朋友帮我分析下,谢谢,另外他不一定也会问这个问题,你们觉得还有哪些问题需要注意的阿!!谢

问题描述 请大家集体帮我把,这涉及到我的前程:我今天下午2点要去面试Asp.Net程序员,他可能问到:我给你个网站你会怎么去做(要求独立去做,业务也是自己和客户谈),请有经验的朋友帮我分析下,谢谢,另外他不一定也会问这个问题,你们觉得还有哪些问题需要注意的阿!!谢了.分数不多了,就这点了,我会平均分配的..谢谢大家了.. 解决方案 解决方案二:你为什么觉得他会这么问?解决方案三:我想的阿,一般去了面试的问题就一个笔试,做完后就问我法帖的问题了,你说对吧.解决方案四:楼主应聘的是什么职位呀,怎么还

《圣殿祭司的ASP.NET4.0专家技术手册》----1-15 将ASP.NET程序开发服务器Port固定的技巧

1-15 将ASP.NET程序开发服务器Port固定的技巧 圣殿祭司的ASP.NET4.0专家技术手册 如果项目以"文件系统"建立,则网页执行时会使用Visual Studio内建的"ASP.NET程序开发服务器",这样便解决了操作系统无IIS服务器的困扰,但有的人问:"能否将Port固定下来?"因为变动的Port,有时要以完整路径引用参考目录下的照片或CSS设置就会产生困扰(如/Images/Pic01.jpg或/Css/WebSite.css

《圣殿祭司的ASP.NET4.0专家技术手册》----1-12 ASP.NET程序的编译模型

1-12 ASP.NET程序的编译模型 圣殿祭司的ASP.NET4.0专家技术手册 ASP.NET 4.0支持两种编译模型:动态编译(Dynamic Compilation)与预编译(Precompilation),让你来决定不同网站何时该用何种编译模型,不但灵活性提升,且若采用预编译网站,执行性能还可以更高. 1-12-1 ASP.NET网站动态编译 动态编译是用户第一次浏览网站时,ASP.NET会将网站程序编译成一个dll组件文件,后续的请求就会以此组件来响应,而编译过后的网站执行性能明显较

一起谈.NET技术,ASP.NET的Session 详解

阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET Web应用程序模型 了解ASP.NET Web应用程序配置文件Web.config的作用.意义及使用方法 了解Internet Information Services(以下简称IIS)的基本使用方法 了解如何在Microsoft SQL Server中创建一个数据库. Session模型简介 Sess

一起谈.NET技术,ASP.NET 4.0 来了

伴随着VS2010的公开测试,ASP.NET4.0也进入了我们的视线.ASP.NET4.0究竟给我们带来了什么,将在哪些方面提高我们的生产力? 在何时你需要使用ASP.NET4.0开发你的网站程序? 需要更严格的遵守Web标准: 需要更流畅的Web Form开发方式: 需要更好的搜索引擎优化: 需要后知后觉的纠正一些不够优良的设计,这些设计甚至可能是在ASP.NET 1.0发布之前就存在的: 需要将现有的功能重新改造为支持server farm或跨application domains: 需要将