Удалить секунды из TimeSpan Editor для - PullRequest
12 голосов
/ 10 июня 2011

Я создаю представление, содержащее форму в ASP.NET MVC3 для модели, содержащей промежутки времени.Мне было интересно, есть ли способ, которым я могу предотвратить отображение текстового поля, отображаемого в секундах?Так что вместо 12:30:00 я бы получил 12:30?

Вот что я имею в модели и представлении:

//model
[Required]
[DataType(DataType.Time)]
public TimeSpan Start { get; set; }


//view
<div class="editor-field">
        @Html.EditorFor(model => model.Start)
        @Html.ValidationMessageFor(model => model.Start)
    </div>

Любой совет будет высоко ценится.

Ответы [ 2 ]

26 голосов
/ 10 июня 2011

Вы можете использовать атрибут [DisplayFormat]:

[Required]
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:hh\:mm}")]
public TimeSpan Start { get; set; }
0 голосов
/ 17 марта 2015

Ответ Дарина работает, но проверка все еще не работает, как я ожидал.Я добавил пользовательскую проверку.Эта пользовательская проверка выполняет регулярное выражение без атрибута регулярного выражения.Это сделано иначе, вы не можете публиковать время, например 14:30, потому что регулярное выражение остановит его, или объект TimeSpan остановит его, потому что ожидает TimeSpan, например, 00: 00: 00.

Итак, я создал этопроверка для MVC 5 с Entity Framework 6 в Visual Studio 2013, обновление 4.

public class Training : IValidatableObject
{
    private const string Time = @"^(?:[01][0-9]|2[0-3]):[0-5][0-9]:00$";

    public int Id { get; set; }

    [Display(Name = "Starttime")]
    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:hh\:mm}")]
    public TimeSpan StartTime { get; set; }

    [Display(Name = "Endtime")]
    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:hh\:mm}")]
    public TimeSpan EndTime { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        var results = new List<ValidationResult>();

        Regex timeRegex = new Regex(Time);

        if (!timeRegex.IsMatch(StartTime.ToString()))
        {
            results.Add(new ValidationResult("Starttime is not a valid time hh:mm", new[] { "StartTime" }));
        }

        if (!timeRegex.IsMatch(EndTime.ToString()))
        {
            results.Add(new ValidationResult("Endtime is not a valid time hh:mm", new[] { "EndTime" }));
        }

        return results;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...