如何以浏览器特定的方式设置datetimepicker格式?

时间:2016-11-30 16:44:28

标签: asp.net-mvc google-chrome bootstrap-datetimepicker

我们正在开发一个ASP.NET MVC Web应用程序,它在前端使用Bootstrap的datetimepicker进行选择。我们需要为所有主流浏览器的最新版本提供支持。

Chrome要求将日期格式化为' yyyy-MM-dd'解决以下错误:

  

指定值" 2016年11月18日00:00:00"不符合   所需格式," yyyy-MM-dd"。

当使用以下代码时,由于format选项正常工作(即用户可以单击日期并将其设置在输入框中),这会导致问题:

    $('.datetimepicker').datetimepicker({
        format: 'YYYY-MM-DD',
        showTodayButton: true,
        showClose: true
    }); 

但是,此代码导致Firefox和IE不使用设置的值属性:

    <div class="form-group">
        @Html.LabelFor(model => model.StartDate, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "form-control datetimepicker", type = "date", @Value = Model.StartDate } })
            @Html.ValidationMessageFor(model => model.StartDate, "", new { @class = "text-danger" })
        </div>
    </div>

删除format: 'YYYY-MM-DD'会导致Firefox和IE无法正常运行,但Chrome不再有效。有没有办法以浏览器特定的方式设置format

1 个答案:

答案 0 :(得分:0)

这不是世界上最优雅的解决方案,但由于我们需要知道其他东西的浏览器,我们在服务器端根据Request.UserAgent设置标志,然后使用那些标志客户端:

服务器C#

ViewBag.Chrome = userAgent.Contains("Chrome");

客户端JavaScript

$('.datetimepicker').datetimepicker({
    showTodayButton: true,
    showClose: true,
    @if (ViewBag.Chrome)
    {
        <text>format: 'YYYY-MM-DD'</text>
    }
});