You need to use same session logic concept to maintain the language value also the active page so you can easily maintain the page redirection on language change. On each page in PageLoad you need to sets its ActivePage session value and on Language change Dropdown Event you just need to check selected Language and activepage session value. Refer the below Sample code for Your Reference and implement it in your as per your code logic.
EnglishMasterPage.master
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2">
<h1>
<span id="lblHeader">Multi Language Pages</span>
</h1>
</td>
</tr>
<tr>
<td>
<span id="lbllanguage" runat="server"></span>
<asp:DropDownList ID="ddlLangauges" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ChangeLanguges">
<asp:ListItem Text="English" Value="E"></asp:ListItem>
<asp:ListItem Text="Chinese" Value="C"></asp:ListItem>
</asp:DropDownList>
</td>
<td>
<div id="dvLogout" runat="server">
<asp:LinkButton ID="lnkLogout" runat="server" OnClick="Logout"
Text="Logout"></asp:LinkButton>
</div>
</td>
</tr>
</table>
</div>
<div id="dvPageLinks" runat="server">
<ul>
<li><a href="EnglishDefaultPage.aspx">Home</a></li>
<li><a href="English.aspx">First Page</a></li>
<li><a href="SecondEnglishPage.aspx">SecondPage</a></li>
</ul>
</div>
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
if (Session["ActivePage"] == null)
{
Session["ActivePage"] = "0";
}
if (Session["Language"] == null)
{
Session["Language"] = "E";
}
ddlLangauges.ClearSelection();
ddlLangauges.Items.FindByValue((string)Session["Language"]).Selected = true;
dvPageLinks.Visible = dvLogout.Visible = (string)Session["ActivePage"] == "0" ? false : true;
}
}
protected void ChangeLanguges(object sender, EventArgs e)
{
Session["Language"] = ddlLangauges.SelectedItem.Value;
Redirect();
}
protected void Logout(object sender, EventArgs e)
{
Session.Abandon();
Response.Redirect("~/EnglishLoginPage.aspx");
}
private void Redirect()
{
string url = string.Empty;
string ActivePage = (string)Session["ActivePage"];
string language = (string)Session["Language"];
switch (ActivePage)
{
case "0":
url = language == "E" ? "~/EnglishLoginPage.aspx" : "~/ChineseLoginPage.aspx";
break;
case "1":
url = language == "E" ? "~/EnglishDefaultPage.aspx" : "~/ChineseDefaultPage.aspx";
break;
case "2":
url = language == "E" ? "~/English.aspx" : "~/Chinese.aspx";
break;
case "3":
url = language == "E" ? "~/SecondEnglishPage.aspx" : "~/SecondChinesePage.aspx";
break;
}
Response.Redirect(url);
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
If Session("ActivePage") Is Nothing Then
Session("ActivePage") = "0"
End If
If Session("Language") Is Nothing Then
Session("Language") = "E"
End If
ddlLangauges.ClearSelection()
ddlLangauges.Items.FindByValue(DirectCast(Session("Language"), String)).Selected = True
dvPageLinks.Visible = InlineAssignHelper(dvLogout.Visible, If(DirectCast(Session("ActivePage"), String) = "0", False, True))
End If
End Sub
Protected Sub ChangeLanguges(sender As Object, e As EventArgs)
Session("Language") = ddlLangauges.SelectedItem.Value
Redirect()
End Sub
Protected Sub Logout(sender As Object, e As EventArgs)
Session.Abandon()
Response.Redirect("~/EnglishLoginPage.aspx")
End Sub
Private Sub Redirect()
Dim url As String = String.Empty
Dim ActivePage As String = DirectCast(Session("ActivePage"), String)
Dim language As String = DirectCast(Session("Language"), String)
Select Case ActivePage
Case "0"
url = If(language = "E", "~/EnglishLoginPage.aspx", "~/ChineseLoginPage.aspx")
Exit Select
Case "1"
url = If(language = "E", "~/EnglishDefaultPage.aspx", "~/ChineseDefaultPage.aspx")
Exit Select
Case "2"
url = If(language = "E", "~/English.aspx", "~/Chinese.aspx")
Exit Select
Case "3"
url = If(language = "E", "~/SecondEnglishPage.aspx", "~/SecondChinesePage.aspx")
Exit Select
End Select
Response.Redirect(url)
End Sub
EnglishLoginPage.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>
Login Page</h1>
<br />
<br />
User name: <asp:TextBox ID="txtUser" runat="server"></asp:TextBox>
<br />
<br />
Password: <asp:TextBox ID="txtPass" runat="server" TextMode="Password"></asp:TextBox>
<br />
<br />
<asp:Button ID="btnLogin" runat="server" OnClick="Login" Text="Login" />
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "0";
Session["Language"] = "E";
}
}
protected void Login(object sender, EventArgs e)
{
Session["ActivePage"] = "1";
Response.Redirect("~/MultiLanguages/EnglishDefaultPage.aspx");
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Session("ActivePage") = "0"
Session("Language") = "E"
End If
End Sub
Protected Sub Login(sender As Object, e As EventArgs)
Session("ActivePage") = "1"
Response.Redirect("~/MultiLanguages/EnglishDefaultPage.aspx")
End Sub
EnglishDefaultPage.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>This is Default Page</h1>
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "1";
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Session("ActivePage") = "1"
End If
End Sub
English.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>This is English Page</h1>
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "2";
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Session("ActivePage") = "2"
End If
End Sub
SecondEnglishPage.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>This is English Second Page</h1>
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "3";
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not Me.IsPostBack Then
Session("ActivePage") = "3"
End If
End Sub
ChineseMasterPage.master
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2">
<h1>
<span id="lblHeader">多语言页面</span>
</h1>
</td>
</tr>
<tr>
<td>
<span id="lbllanguage" runat="server"></span>
<asp:DropDownList ID="ddlLangauges" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ChangeLanguges">
<asp:ListItem Text="英语" Value="E"></asp:ListItem>
<asp:ListItem Text="中文" Value="C"></asp:ListItem>
</asp:DropDownList>
</td>
<td>
<div id="dvLogout" runat="server">
<asp:LinkButton ID="lnkLogout" runat="server" OnClick="Logout"
Text="登出"></asp:LinkButton>
</div>
</td>
</tr>
</table>
</div>
<div id="dvPageLinks" runat="server">
<ul>
<li><a href="ChineseDefaultPage.aspx">家</a></li>
<li><a href="Chinese.aspx">第一页</a></li>
<li><a href="SecondChinesePage.aspx">第二页</a></li>
</ul>
</div>
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
if (Session["ActivePage"] == null)
{
Session["ActivePage"] = "0";
}
if (Session["Language"] == null)
{
Session["Language"] = "C";
}
ddlLangauges.ClearSelection();
ddlLangauges.Items.FindByValue((string)Session["Language"]).Selected = true;
dvPageLinks.Visible = dvLogout.Visible = (string)Session["ActivePage"] == "0" ? false : true;
}
}
protected void ChangeLanguges(object sender, EventArgs e)
{
Session["Language"] = ddlLangauges.SelectedItem.Value;
Redirect();
}
protected void Logout(object sender, EventArgs e)
{
Session.Abandon();
Response.Redirect("~/ChineseLoginPage.aspx");
}
private void Redirect()
{
string url = string.Empty;
string ActivePage = (string)Session["ActivePage"];
string language = (string)Session["Language"];
switch (ActivePage)
{
case "0":
url = language == "E" ? "~/EnglishLoginPage.aspx" : "~/ChineseLoginPage.aspx";
break;
case "1":
url = language == "E" ? "~/EnglishDefaultPage.aspx" : "~/ChineseDefaultPage.aspx";
break;
case "2":
url = language == "E" ? "~/English.aspx" : "~/Chinese.aspx";
break;
case "3":
url = language == "E" ? "~/SecondEnglishPage.aspx" : "~/SecondChinesePage.aspx";
break;
}
Response.Redirect(url);
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
If Session("ActivePage") Is Nothing Then
Session("ActivePage") = "0"
End If
If Session("Language") Is Nothing Then
Session("Language") = "C"
End If
ddlLangauges.ClearSelection()
ddlLangauges.Items.FindByValue(DirectCast(Session("Language"), String)).Selected = True
dvPageLinks.Visible = InlineAssignHelper(dvLogout.Visible, If(DirectCast(Session("ActivePage"), String) = "0", False, True))
End If
End Sub
Protected Sub ChangeLanguges(sender As Object, e As EventArgs)
Session("Language") = ddlLangauges.SelectedItem.Value
Redirect()
End Sub
Protected Sub Logout(sender As Object, e As EventArgs)
Session.Abandon()
Response.Redirect("~/ChineseLoginPage.aspx")
End Sub
Private Sub Redirect()
Dim url As String = String.Empty
Dim ActivePage As String = DirectCast(Session("ActivePage"), String)
Dim language As String = DirectCast(Session("Language"), String)
Select Case ActivePage
Case "0"
url = If(language = "E", "~/EnglishLoginPage.aspx", "~/ChineseLoginPage.aspx")
Exit Select
Case "1"
url = If(language = "E", "~/EnglishDefaultPage.aspx", "~/ChineseDefaultPage.aspx")
Exit Select
Case "2"
url = If(language = "E", "~/English.aspx", "~/Chinese.aspx")
Exit Select
Case "3"
url = If(language = "E", "~/SecondEnglishPage.aspx", "~/SecondChinesePage.aspx")
Exit Select
End Select
Response.Redirect(url)
End Sub
ChineseLoginPage.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<br />
<br />
<h1>
登錄頁面</h1>
<br />
<br />
用戶名: <asp:TextBox ID="txtUser" runat="server"></asp:TextBox>
<br />
<br />
密碼: <asp:TextBox ID="txtPass" runat="server" TextMode="Password"></asp:TextBox>
<br />
<br />
<asp:Button ID="btnLogin" runat="server" OnClick="Login" Text="登錄" />
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "0";
Session["Language"] = "C";
}
}
protected void Login(object sender, EventArgs e)
{
Session["ActivePage"] = "1";
Response.Redirect("~/ChineseDefaultPage.aspx");
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Session("ActivePage") = "0"
Session("Language") = "C"
End If
End Sub
Protected Sub Login(sender As Object, e As EventArgs)
Session("ActivePage") = "1"
Response.Redirect("~/ChineseDefaultPage.aspx")
End Sub
ChineseDefaultPage.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>这是默认页面</h1>
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "1";
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Session("ActivePage") = "1"
End If
End Sub
Chinese.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>这是中文页面</h1>
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "2";
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Session("ActivePage") = "2"
End If
End Sub
SecondChinesePage.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<br />
<br />
<h1>这是中国第二页</h1>
</asp:Content>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Session["ActivePage"] = "3";
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Session("ActivePage") = "3"
End If
End Sub
Screenshot
