如何将datetimepicker与ASP.NET本地化集成

时间:2016-07-06 11:24:01

标签: javascript jquery asp.net

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

Trent的文档说您可以创建一个本地化的datetimepicker,如下所示:

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

我通过在TextBox上设置CssClass属性将datetimepicker附加到ASP.NET TextBox,并让JavaScript通过选择CSS类来附加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的时间选择器属性和一些自定义设置的区域化设置。

1 个答案:

答案 0 :(得分:1)

使用CultureInfo.CurrentCulture.TwoLetterISOLanguageName

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

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