Проблема со свойством даты объекта, переданного из AJAX в веб-службу

У меня есть нормальная и текущая форма с технологией , из которой я получаю различные значения различных элементов управления и передаю их как объект AJAX в веб-сервис ASP.NET.

У меня есть Datepicker jquery, из которого я беру дату, и вместе с ней я даю значение одному из свойств объекта Año_inicio.

Это объект:

Я использую этот код для:

var Atributs = {
    "Versio": VersioProv,
    "NIF": NIF,
    "Id_Experiencia": id_Exp,
    "Data_Inici": $("#txtExpDataInici").val(),
    "Data_Fi": $("#txtExpDataFi").val(),
    "Empresa": $("#txtExpEmpresa").val(),
    "Poblacio": $("#txtExpPoblacio").val(),
    "Treball": $("#txtExpTreball").val(),
    "Motiu_Baixa": $("#txtExpBaixa").val(),
    "Persona_Referencia": $("#txtExpPerRef").val(),
    "Tel_Persona": $("#txtExpTelPerRef").val(),
    "Salari_Brut": $("#txtExpSalariBrut").val()
};

Datepicker в формате dd-MM-yyyy, но если день превышает № 12 Это дает мне эту ошибку и даже не входит в веб-сервис:

{
    "Message":"20-01-2001 no es un valor válido para DateTime.",
    "StackTrace":"   en System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r\n
   en System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n
   en System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n
   en System.Web.Script.Serialization.ObjectConverter.AssignToPropertyOrField(Object propertyValue, Object o, String memberName, JavaScriptSerializer serializer, Boolean throwOnError)\r\n
   en System.Web.Script.Serialization.ObjectConverter.ConvertDictionaryToObject(IDictionary`2 dictionary, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n
   en System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n
   en System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object\u0026 convertedObject)\r\n
   en System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n
   en System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n
   en System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n
   en System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)",
    "ExceptionType":"System.FormatException"
}

Это как если бы AJAX обнаруживает, что я нахожусь в формате MM-dd-yyyy, и на шаге 12 выдает мне ошибку.

Нужно ли форматировать дату перед отправкой в ​​веб-службу?

1
задан 13.01.2017, 00:11
2 ответа

Ты послан дату в формате, спутанном темами интернационализации (i18n)

Чтобы не иметь проблемы с культурой или районом, пошли дату в формате:

"yyyy-MM-dd"

Или если культура находится на испанце

"dd/MM/yyyy"
1
ответ дан 24.11.2019, 14:55

Мне приходят в голову какие-то альтернативы

  • Определять globalization в javascript, таким образом, ты показываешь культуру, которая согласовывалась бы с форматом даты, которая ты используешь

globalize

С этим, использовав ajax признавать дата в формате определенной культуры.

  • Другая состоит в том, чтобы использовать ее librerГ - в

moment.js

для parsear дата и обращать ее в формат, который ajax он определяет (или же MM-dd-yyyy) и посылать ее с этим форматом Эта librerГ - позволяет тебе работать с датами очень простой формы.

0
ответ дан 24.11.2019, 14:55

Теги

Похожие вопросы