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

简介:   这是asp.net程序来读取多语言版本Ini配置文件的开发示例,主要分为以下三个部分:  1、 Ini 配置文件  2、 读取Ini配置文件的DLL  3、 Web页面调用与内容显示  4、 数据库表T_User,如右图    首先说明一下Ini 文件格式:如下图其中[M_Index]...

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

  1、 Ini 配置文件

  2、 读取Ini配置文件的DLL

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

  4、 数据库表T_User,如右图 

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

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

  新建项目 

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

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

  2. 新建文件夹INI添加现有项把ConfigCn.iniConfigEn.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 配置文件的一个封装类,提供方法来获取某个节点里面指定keyvalue,以下是DLL 下载地址:

/Files/xiaogelove/ConfigureManager.rar 

目录
相关文章
|
8月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
594 0
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
304 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
342 6
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1059 13
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
416 5
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
242 4
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
457 3
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
209 3
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
583 3