ASP.NET MVC日期输入格式

问题描述 投票:0回答:1

我有一个日期类型的文本框:

 @Html.TextBoxFor(m => m.DateOfBirth, new { @class = "form-control", type = "date" })

该模型的字段DateOfBirth

   [Required]
    [DataType(DataType.Date)]
    public DateTime DateOfBirth { get; set; } // Дата рождения

但是日期格式是静态mm / dd / yy,这对俄语来说是错误的(年/月/日)。当然我可以手动设置日期格式,但系统是多语言的,并且有英语以及俄语,吉尔吉斯语,乌兹别克语(它们都使用欧洲格式)。当用户更改语言时

 Thread.CurrentThread.CurrentCulture =CultureInfo.CreateSpecificCulture(lang);
 Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);

他应该看到适当的日期格式。但有些人为什么不会发生:(

我已经探索过格式取决于浏览器使用的语言。但铬不能用吉尔吉斯语显示...

asp.net-mvc date format culture
1个回答
0
投票

您可以使用jquery.ui datepicker完成所需的操作。通过使用它(或任何其他提供类似功能的库),您可以轻松地在多个浏览器中维护一致的用户体验,而使用标准的HTML5日期输入(<input type="date" />),您将拥有特定于浏览器的行为。

您可以在加载页面时将日期选择器设置为“区域”。看来你的目标之一是能够解决多种语言问题,我建议坚持“本地化”的想法,而不仅仅是设置dateFormat属性。如果jquery ui没有为您正在寻找的文化提供本地化,请创建一个。

我创建了一个简单的示例,您可以在其中看到本地化在客户端工作。这个想法非常相似,但在你的情况下,它将在服务器端:https://jsfiddle.net/ipvalverde/wxLxLe7p/9/

关于ASP.net MVC,我建议你创建一个Razor View,用你的文化信息在屏幕上设置所有的datepicker元素。像这样的东西:

@{
    _Layout = null;
}

var currentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
string cultureCode = currentCulture.Name;

string datepickerLocalization = // Convert the thread culture name to datepicker culture name...

<script>
    $(function () {
      $.datepicker.setDefaults($.datepicker.regional["@datepickerLocalization"]);
    })
</script>

确保已为受支持的语言加载了本地化的javascripts。

如果这有帮助,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.