Използвам този обект:
[Required]
[Display(Name = "AuditDate", ResourceType = typeof(Resources.Audit))]
[DisplayFormat(DataFormatString = "{dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime dateAudit { get; set; }
В тази част от формуляра ми:
@Html.TextBox("dateAudit", String.Format("{0:d}", Model.dateAudit.ToString("dd'/'MM'/'yyyy"), new { @class = "form-control" }))
Когато се опитам да въведа дата, не мога да изпратя формуляра (появява се диалогов прозорец DatePicker), защото има проблем с полето. Добавих ValidationMessageFor в полето, което ми казва, че полето не съдържа валидна дата:
@Html.ValidationMessageFor(model => model.dateAudit, "", new { @class = "text-danger" })
Това е HTML съобщението за грешка, генерирано в този момент за това поле:
<input data-val="true" data-val-date="The field Date must be a date." data-val-required="The field Date is required." id="dateAudit" name="dateAudit" type="text" value="10/03/2015" class="hasDatepicker input-validation-error">
Също така се опитах да задам културата за всички приложения в конфигурационния файл:
<globalization uiCulture="fr-FR" culture="fr-FR" />
Ако избера дата като 1 март, форматирана като 01/03/2015
, няма проблем и обвързването на модела я разпознава, но когато избера 20 март, полето не успява да се потвърди (подозирам, че мисли, че се опитвам да въведа 20 като месец).
Намерих тази библиотека, която може да помогне с валидирането от страна на клиента, но изглежда, че не е съвместима с всички браузъри, така че не мога да го използвам. Обмислям напълно да премахна проверката от страна на клиента и да валидирам само полето за дата в задната част.
Благодаря за вашата помощ.
РЕДАКТИРАНЕ: Забравих да ви посъветвам, че използвах тази повторна дефиниция на jquery ui за datepicker:
/* French initialisation for the jQuery UI date picker plugin. */
/* Written by Keith Wood (kbwood{at}iinet.com.au),
Stéphane Nahmani ([email protected]),
Stéphane Raimbault <[email protected]> */
(function (factory) {
if (typeof define === "function" && define.amd) {
// AMD. Register as an anonymous module.
define(["../datepicker"], factory);
} else {
// Browser globals
factory(jQuery.datepicker);
}
}(function (datepicker) {
datepicker.regional['fr'] = {
closeText: 'Fermer',
prevText: 'Précédent',
nextText: 'Suivant',
currentText: 'Aujourd\'hui',
monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
monthNamesShort: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin',
'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
weekHeader: 'Sem.',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
datepicker.setDefaults(datepicker.regional['fr']);
return datepicker.regional['fr'];
}));
new { @class = "form-control" }
вътре в него? Мисля, че трябва да е извън извикването на метода за форматиране. - person cbr   schedule 10.03.2015