Quelqu'un peut-il expliquer pourquoi il est supposé qu'une propriété de type non nullable doit toujours avoir une RequiredAttribue? J'essaye d'écrire une aide d'étiquette qui s'ajoutera automatiquement * ou changera la classe de css afin que je puisse indiquer à l'utilisateur que le champ est exigé. Toutefois, lors de l'interrogation des métadonnées, les propriétés non nulles se terminent par un attribut obligatoire.ASP.NET MVC - Annotations de données - Pourquoi ajouter un attribut RequiredAttribute par défaut?
MVC Source Code:
protected override IEnumerable<ModelValidator> GetValidators(
ModelMetadata metadata, ControllerContext context,
IEnumerable<Attribute> attributes)
{
_adaptersLock.EnterReadLock();
try
{
List<ModelValidator> results = new List<ModelValidator>();
if (metadata.IsRequired &&
!attributes.Any(a => a is RequiredAttribute))
{
//******* Why Do this?
attributes = attributes.Concat(new[] { new RequiredAttribute() });
}
foreach (ValidationAttribute attribute in
attributes.OfType<ValidationAttribute>())
{
DataAnnotationsModelValidationFactory factory;
if (!_adapters.TryGetValue(attribute.GetType(), out factory))
factory = _defaultFactory;
results.Add(factory(metadata, context, attribute));
}
return results;
}
finally
{
_adaptersLock.ExitReadLock();
}
}
Exactement. Cela rend la propriété 'requise' très confuse et inutilisable. Depuis, j'ai trouvé Jeremy Skinner avec les mêmes problèmes. http://www.jeremyskinner.co.uk/2010/01/13/limitations-of-mvc2s-modelvalidatorproviders/ – redsquare