Проверка даты с использованием ASP.NET MVC 3.0 - PullRequest
3 голосов
/ 06 июня 2011

Поле «Дата» в пользовательском интерфейсе MVC с именем «startDate» позволяет пользователю выбирать дату с помощью средства выбора даты jquery. Поскольку я хотел проверить, что выбранная дата не должна быть 2 месяца назад и 2 месяца будущего.

Я написал приведенный ниже код для проверки даты.

 public sealed class DateAttribute : DataTypeAttribute
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="EmailAddressAttribute"/> class.
        /// </summary>
        public DateAttribute() : base(DataType.Date)
        {
        }

        /// <summary>
        /// Checks that the value of the data field is valid.
        /// </summary>
        /// <param name="value">The data field value to validate.</param>
        /// <returns>
        /// true always.
        /// </returns>
        public override bool IsValid(object value)
        {
            DateTime inputDate = Convert.ToDateTime(value, CultureInfo.CurrentCulture);

            if (inputDate.Date >= DateTime.Now.Date.AddMonths(-2) && inputDate.Date <= DateTime.Now.Date.AddMonths(2))
                return true;

            return false;
        }
    }

Но проблема в том, что он отправляется на сервер для проверки поля даты. Как я могу добиться того же с проверкой клиента.

Спасибо, -Naren

Ответы [ 3 ]

0 голосов
/ 06 июня 2011
function IsValid(object) {  
    var theDate = new Date(object);  
    var pointfrom = (theDate.getFullYear() * 100) + (theDate.getMonth());  
    var today = new Date();  
    if (pointfrom > (today.getFullYear() * 100) + (today.getMonth()) + 2) return false;  
    if (pointfrom < (today.getFullYear() * 100) + (today.getMonth()) - 2) return false;  
    return true;  
 } 

Я увеличиваю год на 100, что позволяет избежать сравнения между годами

Затем в вашем SPAN id = "x" onBlur = "IsValid (this.value)"> 2001-01-01

Майк

0 голосов
/ 06 июня 2011

Вы пытались использовать вместо этого стандартный атрибут Range validator in System.ComponentModel.DataAnnotations?Что-то вроде:

[Range(typeof(DateTime), 
    DateTime.Now.Date.AddMonths(-2).ToShortDateString(), 
    DateTime.Now.Date.AddMonths(2).ToShortDateString(), 
    ErrorMessage = "Value for {0} must be between {1} and {2}")]
public DateTime StartDate { get; set; }

Стоит попробовать!

0 голосов
/ 06 июня 2011

Достаточно ли ограничения доступных дат на устройстве выбора даты?

С помощью средства выбора даты jquery ui это довольно легко с опциями minDate и maxDate, большинство других имеют аналогичную функциональность.

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