Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET在多语言网站C#中保留所选语言?_C#_Asp.net_Webpage_Multilingual_Ispostback - Fatal编程技术网

ASP.NET在多语言网站C#中保留所选语言?

ASP.NET在多语言网站C#中保留所选语言?,c#,asp.net,webpage,multilingual,ispostback,C#,Asp.net,Webpage,Multilingual,Ispostback,这是我的代码,主要问题是当我选择我想要的语言时,它会更改为该语言,但如果我单击另一个网页,它会转换为原始网页。 示例:我选择英语,然后它会将所有页面更改为英语,但如果我单击页面中的另一个链接,语言将更改为默认语言 这是代码。希望有人能帮助我 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI;

这是我的代码,主要问题是当我选择我想要的语言时,它会更改为该语言,但如果我单击另一个网页,它会转换为原始网页。 示例:我选择英语,然后它会将所有页面更改为英语,但如果我单击页面中的另一个链接,语言将更改为默认语言

这是代码。希望有人能帮助我

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Threading;
    using System.Globalization;
    using System.Resources;

    namespace Jaltepec
    {
        public partial class MainMaster : System.Web.UI.MasterPage
        {
            protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                cargaComboLenguajes();
            }
        }


        private void cargaComboLenguajes()
        {
            String lenguage = Request.QueryString["lenguaje"] == null ? "" : Request.QueryString["lenguaje"];
            if (lenguage == "en")
            {
                cmbIdioma.SelectedValue = "en-us";
            }
            else
            {
                cmbIdioma.SelectedValue = "es-mx";
            }            

        }
        protected void cmbIdioma_SelectedIndexChanged(object sender, EventArgs e)
        {
            string language = cmbIdioma.SelectedValue;

            if (!string.IsNullOrEmpty(language))
            {
                if (language.EndsWith("en-us"))
                {
                    Response.Redirect("Default.aspx?lenguaje=en");
                }
                else
                {
                    Response.Redirect("Default.aspx?lenguaje=es");
                }
            }
        }

    }
}

看起来您只是在为单个请求设置语言。您可能希望将所选语言存储在会话cookie中,以便在每个页面请求中对其进行评估

在asp.net应用程序上实施全球化时,可能值得在google上查看一些最佳做法,例如:


谢谢,我会检查的,是的,我想保持所有内容不变。看起来它不会改变语言,但不管怎样,谢谢。编辑了我的答案。请立即尝试。由于某些原因,它会删除此错误“Jaltepec.dll中发生了类型为'System.NullReferenceException'的异常,但未在用户代码中处理”的此部分“如果(会话[“CMBILIMOA”!=”)”将其更改为“如果(会话[“CMBILIMOA”]。ToString()!=”)。也修改了我的答案
    private void cargaComboLenguajes()
    {
        if (Session["cmbIdioma"].ToString() != "")
        {
            cmbIdioma.SelectedValue = Session["cmbIdioma"].ToString();

        }

        else
        {
            cmbIdioma.SelectedValue = "en-us";
            Session["cmbIdioma"] = "en-us";
        }

    }
    protected void cmbIdioma_SelectedIndexChanged(object sender, EventArgs e)
    {
        string language = cmbIdioma.SelectedValue;

        if (!string.IsNullOrEmpty(language))
        {

            Session["cmbIdioma"] = cmbIdioma.SelectedValue.ToString();
            Response.Redirect("Default.aspx?lenguaje=" + Session["cmbIdioma"].ToString());

        }
    }