Asp.net 使用请求在代码隐藏中发布值并检索它

Asp.net 使用请求在代码隐藏中发布值并检索它,asp.net,request,postback,multilingual,Asp.net,Request,Postback,Multilingual,我正在编写一个使用视频作为教程的多语言web应用程序: 在这段视频中,网络的语言变化是通过一个下拉菜单来实现的,该菜单发布了所需的文化ID(en-UK、es、fr…)。该值在代码隐藏中检索,并用于像这样设置正确的参数 protected override void InitializeCulture() { String language = Request.Form["DropDownList"]; if ((language != null)

我正在编写一个使用视频作为教程的多语言web应用程序:

在这段视频中,网络的语言变化是通过一个下拉菜单来实现的,该菜单发布了所需的文化ID(en-UK、es、fr…)。该值在代码隐藏中检索,并用于像这样设置正确的参数

    protected override void InitializeCulture()
    {
        String language = Request.Form["DropDownList"];
        if ((language != null) && (language != ""))
        {
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
        }
    }
我不喜欢DropDownList的想法,希望用户点击一个标志切换到该语言。我通过超链接实现了这一点:

<asp:HyperLink ID="HyperLinkSpanish" runat="server" NavigateUrl="Tool.aspx?id=es"><img src="img/es.png"></asp:HyperLink>
这很好,但只要你点击超链接,页面就会从头开始重新加载,而我的想法是用所选语言翻译目前为止显示的所有内容。我是一个完全自动的人,我想知道如何实现同样的机制(使用Request.Form[“ControlID”]发布和检索它的值),但使用链接按钮和单击事件。。。 …或任何其他建议。谢谢你,马丁
----- 我忘记指出的是,我在标记中使用了对资源文件的引用,这些引用根据所选的区域性ID放置了正确的文本:

HeaderText="<%$ Resources: Resource, Grid01Documentation %>"
HeaderText=“”

因此,更改语言会影响所有GridView标题、按钮等

您熟悉
LinkButton
控件吗?您可以使用一系列
控件。将
CommandName
属性设置为类似“SetLanguage”的值,
CommandArgument
设置为区域性字符串,将单个
单击
事件处理程序附加到所有实例。在
单击事件处理程序中,检索
CommandName
CommandArgument
属性,并像现在一样设置线程的区域性属性。然后,使用一些CSS来设置控件的外观样式。如果使用
LinkButton
,则可以给它一个
CommandArgument
,指定区域性ID并在单击处理程序中检索该值。但“从头开始重新加载”和“翻译到目前为止显示的所有内容”是什么意思,以及这与使用
LinkButton
有什么关系,还不清楚。您是在问如何使用
LinkButton
(MSDN上有示例,没有?),还是在问其他问题?我尝试了您所说的,实际上我可以更改LinkButton事件处理程序中的区域性属性。但不起作用的是,我的标记(Text=”“)中的所有文本标记都会根据所选语言从资源文件中检索正确的文本。首先,当使用override InitializeCulture()方法时,它起了作用。@David从头开始重新加载在我的例子中,意味着用户打开、选择的所有表、详细视图,。。将消失,因为页面实际上已重新加载。您熟悉
LinkButton
控件吗?您可以使用一系列
控件。将
CommandName
属性设置为类似“SetLanguage”的值,
CommandArgument
设置为区域性字符串,将单个
单击
事件处理程序附加到所有实例。在
单击事件处理程序中,检索
CommandName
CommandArgument
属性,并像现在一样设置线程的区域性属性。然后,使用一些CSS来设置控件的外观样式。如果使用
LinkButton
,则可以给它一个
CommandArgument
,指定区域性ID并在单击处理程序中检索该值。但“从头开始重新加载”和“翻译到目前为止显示的所有内容”是什么意思,以及这与使用
LinkButton
有什么关系,还不清楚。您是在问如何使用
LinkButton
(MSDN上有示例,没有?),还是在问其他问题?我尝试了您所说的,实际上我可以更改LinkButton事件处理程序中的区域性属性。但不起作用的是,我的标记(Text=”“)中的所有文本标记都会根据所选语言从资源文件中检索正确的文本。首先,当使用override InitializeCulture()方法时,它起了作用。@David从头开始重新加载在我的例子中,意味着用户打开、选择的所有表、详细视图,。。将消失,因为页面实际上已重新加载。
HeaderText="<%$ Resources: Resource, Grid01Documentation %>"