Porównaj ceny domen i usług IT, sprzedawców z całego świata

Sprawdzanie zakresu dynamicznego w ASP.NET MVC 2


Używam ASP.NET MVC2 i próbuję sprawdzić poprawność moich modeli widoku przy użyciu atrybutów w przestrzeni nazw System.ComponentModel.DataAnnotations.
Jak dynamicznie ustawić prawidłowy prawidłowy zakres atrybutu Range?
Na przykład, jeśli chcę sprawdzić, czy wprowadzona data mieści się w oczekiwanym zakresie.
To się nie kompiluje:
[Range(typeof(DateTime), 
DateTime.Today.ToShortDateString(),
DateTime.Today.AddYears(1).ToShortDateString())]
public DateTime DeliveryDate { get; set; }

ponieważ „argument atrybutu musi być wyrażeniem stałym, wyrażeniem typu lub wyrażeniem tworzenia tablicy o typie parametru atrybutu”.
Czy muszę uciec się do tworzenia własnego niestandardowego walidatora?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ok, znalazłem odpowiedź. NET Framework 4 udostępnia nowy atrybut CustomValidationAttribute, który umożliwia:
[Required]
[DisplayName("Ideal Delivery Date")]
[CustomValidation(typeof(HeaderViewModel), "ValidateDeliveryDate")]
public DateTime DeliveryDate { get; set; }public static ValidationResult ValidateDeliveryDate(DateTime deliveryDateToValidate)
{
if (deliveryDateToValidate.Date < DateTime.Today)
{
return new ValidationResult("Delivery Date cannot be in the past.");
} if (deliveryDateToValidate.Date > DateTime.Today.AddYears(1))
{
return new ValidationResult("Delivery Date must be within the next year.");
} return ValidationResult.Success;
}

http://msdn.microsoft.com/en-us/ library/system.componentmodel.dataannotations.customvalidationattribute% 28VS.100% 29.aspx
http://msdn.microsoft.com/en-u ... .aspx
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz utworzyć własny atrybut lub użyć struktury walidacji opartej na atrybutach none. Jak mówi komunikat, wszystkie parametry dowolnego atrybutu muszą być stałymi wartościami.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się