【问题标题】:How to integrate datetimepicker with ASP.NET localisation如何将 datetimepicker 与 ASP.NET 本地化集成
【发布时间】:2016-07-06 11:24:01
【问题描述】:

我正在使用 Trent Richardson 的 JQuery 的 datetimepicker 扩展,通过 NuGet 获得: http://trentrichardson.com/examples/timepicker/

Trent 的文档说您可以像这样创建一个本地化的日期时间选择器:

$('#basic_example_4').timepicker(
    $.timepicker.regional['es']
);

我通过在 TextBox 上设置 CssClass 属性将 datetimepicker 附加到 ASP.NET TextBox,并通过选择 CSS 类让 JavaScript 附加 datetimepicker:

<script type="text/javascript">
    $(document).ready(function () {
        $('.calendarStartDateTime').datetimepicker({
            dateFormat: 'yy-mm-dd',
            timeFormat: 'hh:mm TT',
            controlType: 'select',
            oneLine: true
        });
    });
</script>
...
<asp:TextBox ID="StartDateTime" runat="server" CssClass="calendarStartDateTime" meta:resourcekey="StartDateTimeResource1"></asp:TextBox>

我的 ASP.NET 页面声明设置了 culture="auto" 和 uiculture="auto",以便所有 ASP.NET 元素从浏览器设置中获取文化设置(因此我可以使用 ASP.NET 资源来本地化文本)。

我希望 datetimepicker 也能根据浏览器设置自动应用本地化,与服务器端组件的本地化方式一致。我如何实现这一目标?我是否需要在 Javascript 中插入一个 ASP.NET 标记,例如:

<script type="text/javascript">    
    $(document).ready(function () {
        $('.calendarStartDateTime').datetimepicker({
            $.timepicker.regional[<% magic happens here %>],
            controlType: 'select',
            oneLine: true
        });
    });
</script>

还是应该在纯 JavaScript 中检测浏览器文化?


编辑:根据@smirnov 的回答,我的时间选择器的最终代码是:

<script type="text/javascript">
    $(document).ready(function () {
        $('.calendarStartDateTime').datetimepicker(
            $.extend(
                {},
                $.datepicker.regional['<%= System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName %>'],
                $.timepicker.regional['<%= System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName %>'],
                {
                    dateFormat: 'yy-mm-dd',
                    timeFormat: '<%= System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern %>',
                    controlType: 'select',
                    oneLine: true
                }
            )
        )
    });
</script>

此代码正确地合并了 jQuery 内置日期选择器的区域化设置、Trent Richardson 的时间选择器属性和一些自定义设置。

【问题讨论】:

    标签: javascript jquery asp.net


    【解决方案1】:

    使用CultureInfo.CurrentCulture.TwoLetterISOLanguageName

    由于 timepicker 似乎使用国家/地区代码作为区域值,请尝试

    ...
    $.timepicker.regional['<%=System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName%>'],
    ...
    

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 2017-02-13
      • 2013-01-18
      • 1970-01-01
      • 2010-10-12
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多