Vous devez créer un attribut de validation personnalisé pour cela. Le code ci-dessous peut vous aider à le faire.
public class RequiredIfAttribute : RequiredAttribute
{
private string PropertyName { get; set; }
private object DesiredValue { get; set; }
public RequiredIfAttribute(string propertyName, object desiredvalue)
{
PropertyName = propertyName;
DesiredValue = desiredvalue;
}
protected override ValidationResult IsValid(object value, ValidationContext context)
{
object instance = context.ObjectInstance;
Type type = instance.GetType();
Object proprtyvalue = type.GetProperty(PropertyName).GetValue(instance, null);
if (proprtyvalue.ToString() == DesiredValue.ToString())
{
ValidationResult result = base.IsValid(value, context);
return result;
}
return ValidationResult.Success;
}
}
Ensuite, vous devez décorer votre propriété avec cet attribut (lire les commentaires dans le code pour comprendre)
public class User
{
/// <summary>
/// Gets or Sets Usertype.
/// </summary>
public string UserType { get; set; }
/// <summary>
/// Gets or Sets KurumKodu.
/// Here "Usertype" is property. In that you have to assign current user's role.
/// "user" is constant role. If "UserType" has value as "user" then this will be required.
/// </summary>
[RequiredIf("UserType", "user", ErrorMessage = "It is required")]
public decimal KurumKodu { get; set; }
}
Si vous souhaitez ajouter la validation côté client (discrète), veuillez consulter le lien ci-dessous.
Attribut de validation conditionnelle RequiredIf