通过下拉菜单和查询参数设置页面区域性



我有一个下拉菜单"DDLanguage";其中用户为应用程序选择语言,而这个ovveride方法设置相应的Culture。到目前为止还不错。

protected override void InitializeCulture()
{
String language = Request.Form["DDLanguage"];
if (!string.IsNullOrEmpty(language))
{
if (language == "auto")
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(HttpContext.Current.Request.UserLanguages[0].Trim());
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(HttpContext.Current.Request.UserLanguages[0].Trim());
}
else
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
}
}
}

然后,我引入了一个Querystring参数,在一个所需的重载事件中将所选的语言传递到页面。这会导致一方的查询字符串所提供的语言与另一方的下拉列表之间存在一些冲突。我希望Querystring仅在第一次页面加载时是强制性的,但之后不应该再考虑它,因为它会被下拉菜单的选择否决。

我写的代码是:

String language = Request.Form["DDLanguage"];
String languageChanged = Request.Form["LabelLanguage"];
if (!string.IsNullOrEmpty(Request.QueryString["Lang"]) && string.IsNullOrEmpty(languageChanged))
{
language = Request.QueryString["Lang"];
}

其中LabelLanguage存储对下拉菜单的选择,并且在做出第一个选择之前为空。

不幸的是,这不起作用,区域性仅由查询参数设置。欢迎提出任何建议。谢谢,Martin

我应用的逻辑是正确的,但

String languageChanged = Request.Form["LabelLanguage"];

不会返回值。我现在知道我不能处理Label的数据,因为它不会被呈现为包含值的html元素。相反,我使用了一个asp:HiddenField,它以该命令可以请求其值的方式呈现。

最新更新