首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

好几天了,小弟我快疯了?

2012-01-28 
好几天了,我快疯了????????????????????我的作法为:1.我先作个首页,form idform1 runatserver di

好几天了,我快疯了????????????????????
我的作法为: 
  1.我先作个首页, 
  <form id="form1" runat="server" > 
  <div > 
  <asp:Label ID="lanuage" runat="server" >Label </asp:Label > 
  <asp:DropDownList ID="drp_language" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drp_language_SelectedIndexChanged" 
  Width="152px" > 
  </asp:DropDownList > 
  <asp:Button ID="btnLogon" runat="server" Text="Button" OnClick="btnLogon_Click" / > </div > 
  </form > 

后台: 
  public partial class index : System.Web.UI.Page 
  { 
  public static string strName; 

  protected void Page_Load(object sender, EventArgs e) 
  { 
  if (!Page.IsPostBack) 
  { 
  init(); 
  } 

  } 
  private void init() 
  { 
  drp_language.DataSource = TangramMiniWeb.ResourceManager.GetSupportedLanguages(); 
  drp_language.DataTextField = "name"; 
  drp_language.DataValueField = "key"; 
  drp_language.DataBind(); 

  if (drp_language.Items.Count > 0) 
  { 
  strName = drp_language.SelectedValue; 
  ShowText(drp_language.Items[0].Value); 
  } 
  } 
  private void ShowText(string userlanguage) 
  { 
  btnLogon.Text = TangramMiniWeb.ResourceManager.GetString("GO", userlanguage); 
  //strName = btnLogon.Text = MultLanuage.ResourceManager.GetString("btnLogon", userlanguage); 
  lanuage.Text = TangramMiniWeb.ResourceManager.GetString("lanuage", userlanguage); 

  } 
  protected void drp_language_SelectedIndexChanged(object sender, EventArgs e) 
  { 
  ShowText(drp_language.SelectedValue); 
  strName = drp_language.SelectedValue; 
  } 
  protected void btnLogon_Click(object sender, EventArgs e) 
  { 
  Session["selectvalue"] = drp_language.SelectedValue.ToString(); 
  Response.Redirect("tan/Default.aspx"); 
  } 
  } 

2.还写了个语言的基类: 
  public class ResourceManager 


public ResourceManager() 

  // 


public static string GetString(string name,string userLanguages) 

  //通过指定属性名返回包含此属性名相关信息的hash表 
Hashtable source=LoadSorce(userLanguages); 
  if (source != null) 
  { 
  //不为空就返回其值  
  return source[name].ToString(); 
  } 
  else 
  { 
  //为空 
  return ""; 
  } 


  //获取语言目录数据,返回一个数据视图 
public static DataView GetSupportedLanguages() 



string cacheKey = "Languages"; 
  //判断当前数据缓存中是否为空 
if(HttpContext.Current.Cache[cacheKey]==null) 

  //获取xml文件存放的物理路径 
string PathFile=System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath+"/Languages/languages.xml"); 
DataSet objDataSet=new DataSet(); 
  // 
objDataSet.ReadXml(PathFile); 
CacheDependency dp = new CacheDependency(PathFile); 
HttpContext.Current.Cache.Insert(cacheKey,objDataSet.Tables[0].DefaultView,dp,DateTime.MaxValue, TimeSpan.Zero); 
  } 
 return (DataView)HttpContext.Current.Cache[cacheKey]; 

  } 
//获取语言语句字典 

public static Hashtable LoadSorce(string userLanguages) 

  //获取xml文件存放的物理路径 
string PathFile=System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath+"/Languages/"+userLanguages+"/Resources.xml"); 
//建一个XML DOCUMENT的实例对象 
  System.Xml.XmlDocument LagXml=new XmlDocument(); 
  //导入要操作的XML文件 
LagXml.Load(PathFile); 
  // 
Hashtable supportedLanguages;  
  //建立HASHTABLE的对象实例 
supportedLanguages = new Hashtable(); 
//遍历XML文件中的所有子节点 
foreach (XmlNode n in LagXml.SelectSingleNode("root").ChildNodes)  

if (n.NodeType != XmlNodeType.Comment)  

  //把子节点的键/值对添加到hashtable中 
supportedLanguages.Add(n.Attributes["name"].Value,n.InnerText); 



  //返回hashtable 
return supportedLanguages; 





3.写了个XML的中文和英文的RESOUTCES.XML,当我选择英文时,根据设置读取英文网页的XML资源文件中定义的标签文字就行了吧。我选择英文了,就用那个XML文件 ID相同的英文标识来替换网页中相同的ID标记呀。 
这个小测试是成功的。 
4.我现在要把全站都用中文和英文业显示,那方法为 
就拿一个about.aspx这个网页来说吧,我说我的个人方法 
先作完about.aspx的中文页面,然后调用我那个语言的基类,再写这个about.aspx的XML的2种语言的XML的文件吗。  

最后每一个页面都要这样完成吗,方法正确吗请各位老哥,老姐,先生女士 小姐们指出? 

谢谢

[解决办法]
为什么不利用资源文件??
[解决办法]
个人认为可行,定义键值对,写好基类
[解决办法]
发到asp.net模块
见了<>头就大

热点排行