我有一个登录页面,用户可以在其中通过单选按钮选择他的语言,登录后用户将被重定向到 Default.aspx,我在其中使用以下方法设置页面文化:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"%>
<%@ Import Namespace="System.Resources" %>
<% @Import Namespace="System.Globalization" %>
<% @Import Namespace="System.Threading" %>
<script runat=server>
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["lang"].ToString());
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Session["lang"].ToString());
base.InitializeCulture();
}
</script>
如何将登录页面中选择的语言传递给 Default.aspx 页面中的此方法?我试图通过 session 传递它,但出现此错误:
System.NullReferenceException: 'Object reference not set to an instance of an object.' System.Web.SessionState.HttpSessionState.this[string].get returned null.
因为此方法发生在启动任何控件或 session 之前的早期阶段,这就是它返回 null 的原因。知道如何将选定的区域性传递给此方法吗?
在您的代码中,“lang”被加载到 Session 中的什么地方?
我相信这是在告诉您“lang”在 SessionState 中不存在,而 SessionState 本身不可用。
我是一名优秀的程序员,十分优秀!