gpt4 book ai didi

c# - Culture 是否自动应用于 ASP.Net Webforms? (不是 UICulture)

转载 作者:太空狗 更新时间:2023-10-30 01:02:47 30 4
gpt4 key购买 nike

我有一个 Webforms ASP.Net 4.5 应用程序,它没有在 web.config 或代码中的其他地方指定文化或 uiculture 设置。我担心日期格式是否适合来自不同国家的用户,即文化设置而不是 UICulture 设置。

问题:如果英国、德国和美国的用户使用此 ASP.Net 应用程序,那么在 asp:Label 控件中显示时是否会自动格式化日期值,或者开发人员需要明确地进行这种格式化?

Label 控件使用 ASP.Net Webforms 的数据绑定(bind)语法进行数据绑定(bind),如下面的代码片段所示。例如,如果美国用户的订单日期是 10/4/2014,那么对于英国或德国的用户,它应该显示为 4/10/2014。

HTML

<asp:Label id="lblOrderDate" runat="server" Text="<%# this.OrderDate %>"></asp:Label>

代码隐藏

protected void Page_Load(object sender,   EventArgs e)
{
string orderId = this.txtOrderId.Text;
Order order = DAL.GetOrder( orderId );
this.OrderDate = order.OrderDate;
this.Page.DataBind();
}

public DateTime OrderDate { get;set; }

更新 1

我不确定是否需要在页面代码隐藏中包含以下代码来设置区域性,或者它会由 ASP.Net 自动完成?我的猜测是 ASP.Net 会自动执行此操作,但不确定。

protected override void InitializeCulture()
{
string language = "en-us";

//Detect User's Language.
if (Request.UserLanguages != null)
{
//Set the Language.
language = Request.UserLanguages[0];
}

//Set the Culture.
Thread.CurrentThread.CurrentCulture = new CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
}

最佳答案

Asp.net 可以根据浏览器的内容自动设置文化。 (这是我们在 Request.UserLanguages 中得到的)。如果你这样做了 "<%# this.OrderDate %>"将根据它自动格式化。

Look at the documentation

To have ASP.NET set the UI culture and culture to the first language that is specified in the current browser settings, set UICulture and Culture to auto. Alternatively, you can set this value to auto:culture_info_name, where culture_info_name is a culture name. For a list of culture names, see CultureInfo. You can make this setting either in the @ Page directive or Web.config file.

<%@ Page Culture="auto" %>

或全局所有页面。

<configuration>
<system.web>
<globalization culture="auto"/>
</system.web>
</configuration>

但是您不能信任 Request.UserLanguages。这只是浏览器的偏好。最好允许用户通过列表框进行选择。

您可以通过覆盖页面的 initializeculture 调用,以编程方式为每个请求显式设置它。

protected override void InitializeCulture()
{
if (Request.Form["ListBox1"] != null)
{
String selectedLanguage = Request.Form["ListBox1"];
Culture = selectedLanguage ;

Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(selectedLanguage);

}
base.InitializeCulture();
}

母版页没有 InitializeCulture() 调用。所以如果你想对所有页面都这样做,那么创建一个继承 Page 的 BasePage。然后允许您的所有页面继承自该页面。参见 this answer

关于c# - Culture 是否自动应用于 ASP.Net Webforms? (不是 UICulture),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32417109/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com