HttpCookie加匿名类实现多语言


突然想做一个多语言网站,确不知道怎么实现好,突然想到了HttpCookie,然后页面后台用匿名类实现语言的储存。

            string lan = Request["str_lan"];
            ViewBag.lan = lan;

            HttpCookie hc = new HttpCookie("language");
            hc.Value = lan;
            hc.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Add(hc);        

HttpCookie用来当前记录语言种类。

前台页面取值:

@{
    ViewBag.Title = "Home Page";
    var language = new Dictionary<string, object>();
    language.Add("zh_cn", new { name = "邓永高" });
    language.Add("en", new { name = "dyg" });

    string get_lan = string.Empty;
    HttpCookie cookie_language = Request.Cookies["language"];
    if (cookie_language != null)
    {
        get_lan = cookie_language.Value;
    }

}


@using MVCMutiLan.Controllers;

@Html.getPageLanVal(language, get_lan, "name").ToString()

"/Home/Index" method="post"> <select name="str_lan"> select> "submit" value="设置语言" />
@ViewBag.lan

控件取值的扩展方法:

 public static class HtmlHelpers
    {
        public static object getPageLanVal(this HtmlHelper helper, Dictionary<string, object> dic, string strlan, string Lanvalue)
        {
            return dic[strlan].GetType().GetProperties().Where(x => x.Name == Lanvalue).FirstOrDefault().GetValue(dic[strlan]);
        }
    }