Как проверить формат даты дд/ММ/гггг в Кендо?

#javascript #asp.net-mvc #date #datetime #kendo-ui

Вопрос:

Я использую следующий код для запроса у пользователя Даты начала и даты окончания в форме MVC

 @using (Html.BeginForm("InfoEdit", "Info", FormMethod.Post, new { id = "Form" })) {  lt;tablegt;  lt;trgt;  lt;tdgt;Start DateTimelt;/tdgt;  lt;tdgt;  @(Html.Kendo().DateTimePickerFor(model =gt; model.StartDateTime).Name("StartDateTime").Format("dd/MM/yyyy HH:mm tt").ParseFormats(new string[] { "dd/MM/yyyy" }).HtmlAttributes(new { style = "width:300px;", onkeydown="javascript:return false;" }))  lt;/tdgt;  lt;/trgt;  lt;trgt;  lt;tdgt;Expiration DateTimelt;/tdgt;  lt;tdgt;  @(Html.Kendo().DateTimePickerFor(model =gt; model.ExpirationDateTime).Name("ExpirationDateTime").Format("dd/MM/yyyy HH:mm tt").ParseFormats(new string[] { "dd/MM/yyyy" }).HtmlAttributes(new { style = "width:300px;", onkeydown="javascript:return false;" }))  lt;/tdgt;  lt;/trgt;  lt;/tablegt; }  

Код javascript выглядит следующим образом :

 $(document).ready(function () {  function onChange() {  var StartDateTime = $("#StartDateTime").val().split(" ");  var date = StartDateTime[0].split("/");  var time = StartDateTime[1].split(":");  var dd = date[0];  var MM = date[1];  var yyyy = date[2];  var HH = time[0];  var min = time[1];  var tt = StartDateTime[2];  StartDateTime = new Date(yyyy,MM-1,dd,HH,min);  var ExpirationDateTime = new Date(StartDateTime.setHours(StartDateTime.getHours()   1))  $("#ExpirationDateTime").data("kendoDateTimePicker").value(ExpirationDateTime);   }   $("#StartDateTime").kendoDateTimePicker({  change: onChange,  format: "dd/MM/yyyy HH:mm tt",  parseFormats: ["dd/MM/yyyy"]  }); }  

У меня есть модель для значений, как показано ниже :

 [Required(ErrorMessage = "Start Datetime is required.")] [DataType(DataType.DateTime)] public DateTime StartDateTime { get; set; }  [Required(ErrorMessage = "Expiration Datetime is required.")] [DataType(DataType.DateTime)] public DateTime ExpirationDateTime { get; set; }  

Но когда я отправляю форму, я получаю ошибку, как показано ниже :

 The value '16/11/2021 11:10 AM' is not valid for StartDateTime. The value '16/11/2021 12:10 PM' is not valid for ExpirationDateTime.  

Он работает в формате по умолчанию, т. е. ММ/дд/гггг, но я хочу, чтобы он работал как дд/ММ/гггг. Я пробовал использовать kendoValidator , но это не сработало для меня, или, может быть, я использовал его неправильно.Что я могу сделать, чтобы передать формат даты дд/ММ/гггг?

Кроме того, следует отметить, что если часть даты dd меньше или равна 12, дата проходит без каких-либо ошибок.

Ответ №1:

Вы применяете форматирование в синтаксисе razor, это может быть причиной появления ошибки. Я попробовал приведенный ниже код, и это сработало для меня. Даже это будет работать в режиме редактирования.

Синтаксис Razor
@Html.TextBoxFor(m=gt;m.Время начала)

Синтаксис JavaScript

$(документ).готово(функция () { $(«#StartDateTime»).kendoDatePicker({ формат: «дд/ММ/гггг ЧЧ:мм тт», }); });

Комментарии:

1. У меня это не работает. Кроме того, при первой загрузке страницы формат даты не соответствует тому, что я намереваюсь показать.

Ответ №2:

Поскольку en-US является культурой по умолчанию, нам нужно установить культуру как en-GB. Чтобы сделать это :

 lt;script src="https://kendo.cdn.telerik.com/2021.3.1109/js/cultures/kendo.culture.en-GB.min.js"gt;lt;/scriptgt;  $(document).ready(function () {  //set the culture  kendo.culture("en-GB");  function onChange() {  // code goes here  } }  

и измените файл Web.Config, добавив

 lt;system.webgt;  lt;globalization uiCulture="en-GB" culture="en-GB"gt;lt;/globalizationgt; lt;/system.webgt;