以不同语言显示引导日期选择器日期,然后在 asp.net razor 视图中以英文提交日期

Posted

技术标签:

【中文标题】以不同语言显示引导日期选择器日期,然后在 asp.net razor 视图中以英文提交日期【英文标题】:display bootstrap datepicker date in different language then submit date in English in asp.net razor view 【发布时间】:2020-11-20 04:07:14 【问题描述】:

我在我的 asp.net 核心应用程序中使用 bootstrap-datepicker。日期选择器包含语言选项,以便日期选择器以所选语言显示月/日等。 但是,当我来提交表格时,我想提交所选日期的英文表示。 提交时 Jquery 验证失败。

日期选择器选项

 <script src="~/js/bootstrap-datepicker.min.js"></script>
 <script src="~/js/bootstrap-datepicker.es.min.js"></script>
    

     $(".datepicker").datepicker(
                    format: "dd M yyyy",
                    language:  "es",
                    weekStart: 1,
                    maxViewMode: 2,
                    todayHighlight: true,
                    startDate: startDate,
                    daysOfWeekDisabled: [],
                    showOnfocus: true,
                    autoClose: true,
                    orientation: "bottom"
                );

asp.net taghelper

<input type="text" asp-for="JoiningDate" asp-format="0:dd MMM yyyy" class="datepicker"/>

由于文本字段在这种情况下以西班牙语接收翻译的日期,因此提交时验证失败。 理想情况下,我想以英文格式提交日期,但以所选语言查看选择器。 我尝试在提交功能中将日期选择器语言选项改回英文,但没有奏效。

【问题讨论】:

JoiningDate 字段的类型是什么? jquery validate 失败是什么意思?请提供完整的代码和信息,否则我们无法帮助您重现和解决问题。 @YongqingYu JoiningDate 是来自 c# 模型类的 c# 日期变量。验证失败意味着所需的日期字段无法识别日期格式,因为它以不同的语言呈现在文本字段上。 【参考方案1】:

如果您希望在点击提交后将日期传递给操作时能够识别,那么我建议您使用 ajax 手动传递它

可以在jquery中获取选中的日期,转换成可以传递的格式。

详情请参考以下案例:

public class MyModelDate

    public DateTime JoiningDate  get; set; 


查看:

@model MyModelDate
@
    ViewData["Title"] = "DateTest";
    Layout = "~/Views/Shared/_Layout.cshtml";


<h1>DateTest</h1>

<form asp-action="DateTest" method="post">
    Date: <input type="text" asp-for="JoiningDate" asp-format="0:dd MMM yyyy" class="datepicker" />
    <span asp-validation-for="JoiningDate" class="text-danger"></span>
    <input id="Submit1" type="submit" value="submit" />
</form>

@section Scripts
    <link href="~/bootstrap-datepicker/css/datepicker.css" rel="stylesheet" />
    <script src="~/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
    <script src="~/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js"></script>
    <script>
        $(".datepicker").datepicker(
             format: "dd M yyyy",
             language:  "es",
             weekStart: 1,
             maxViewMode: 2,
             todayHighlight: true,
             startDate: startDate,
             daysOfWeekDisabled: [],
             showOnfocus: true,
             autoClose: true,
             orientation: "bottom"
        );
        $("form").submit(function () 
            event.preventDefault();
            //get datepicker selected date and convert to ISO string format
            var date = $('.datepicker').data('datepicker').date.toISOString();
            var MyModelDate = 
                JoiningDate: date
            ;
            $.ajax(
                type: 'post',
                url: "/Home/DateTest",
                data: MyModelDate

            )
        );

    </script>

这是测试结果:

【讨论】:

以上是关于以不同语言显示引导日期选择器日期,然后在 asp.net razor 视图中以英文提交日期的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个引导日期选择器不显示日期选择器?

如何更改引导日期选择器月视图以显示季度

使用 ASP.NET MVC C# 和引导日期选择器将不起作用

如何在引导日期选择器中突出显示特定日期?

如何使用角度引导日期选择器显示正确的日期格式?

引导日期选择器弹出窗口未显示突出显示的当前日期