asp.net core 2.0 пользовательское время ввода {mm: ss.fff} - PullRequest
0 голосов
/ 02 июля 2018

Можно ли определить пользовательскую маску или формат для DateTime или TimeSpan в поле ввода в виде бритвы? (в этом случае ищем {mm: ss.fff} Я пробовал несколько комбинаций в моей модели, включая:

    [Required (ErrorMessage ="please add a time")]
        [Display(Name = "Clocked Time")]
        [DisplayFormat(DataFormatString = "{0: mm:ss.fff}", ApplyFormatInEditMode = true)] 
         public TimeSpan? Clockedtime { get; set; }

1 Ответ

0 голосов
/ 02 июля 2018

Я думаю, вам будет трудно получить маску формата / ввода для TimeSpan. Я думаю, что лучше всего использовать строку в качестве типа ввода и применить к ней регулярное выражение.

[Required (ErrorMessage ="please add a time")]
[Display(Name = "Clocked Time")]
[RegularExpression(@"^(60|([0-5][0-9])):(60|([0-5][0-9]))(\.[0-9]*)$", ErrorMessage = "Must be in format hh:mm.fff")]
public String ClockedtimeString { get; set; }

private TimeSpan Clockedtime => TimeSpan.Parse(ClockedtimeString);

Это должно обеспечить проверку на стороне клиента, если пользователь вводит неверное значение. Вы, вероятно, можете настроить регулярное выражение, чтобы оно лучше соответствовало вашим потребностям (это не моя область знаний).

На странице вашего контроллера / бритвы вы можете ссылаться на свойство Clockedtime, которое должно содержать проанализированное значение.

...