I have a class model as below:
public class QuataShareSurplussFormModel
{
public QuataShareSurplussOfferLetterModel offeredLetters { get; set; }
[ListValidations]
[ListDuplicateValidations]
public List<QuataShareClassModel> quataShareClass { get; set; }
[ListValidations]
[ListDuplicateValidations]
public List<SurplusClassModel> surplusClass { get; set; }
[ListDuplicateValidations]
public List<OfferedLettersClauseModel> lettersClauses { get; set; }
[ListDuplicateValidations]
public List<OfferedLettersExclusionsModel> lettersExclusions { get; set; }
[ListDuplicateValidations]
public List<OfferedLettersGeneralConditionsModel> lettersGeneralConditions { get; set; }
[ListDuplicateValidations]
public List<OfferedLettersSpecialConditionsModel> lettersSpecialConditions { get; set; }
[ListDuplicateValidations]
public List<OfferedLettersGeneralExclusionsModel> lettersGeneralExclusions { get; set; }
}
quataShareClass
property has the following items:
public class QuataShareClassModel
{
public int offeredLetterId { get; set; }
[PropRequiredValidation]
[PropRangeValidation(1, int.MaxValue)]
public int? classId { get; set; }
[PropRequiredValidation]
[PropRangeValidation(0, long.MaxValue)]
public long? maxLimitOfCover { get; set; }
[PropRequiredValidation]
[PropRangeValidation(0, byte.MaxValue)]
public byte? baseDataServiceCurrencyTypeId { get; set; }
[PropRequiredValidation]
[PropRangeValidation(0, int.MaxValue)]
public Nullable<int> exchangeRate { get; set; }
[PropRequiredValidation]
[PropRangeValidation(0, long.MaxValue)]
[CalculativeIRRCheck(nameof(maxLimitOfCover), nameof(exchangeRate))]
public long? maxLimitOfCoverInIRR { get; set; }
[PropRequiredValidation]
[PropRangeValidation(0, byte.MaxValue)]
public long? commission { get; set; }
[PropRequiredValidation]
[PropRangeValidation(1, int.MaxValue)]
public int? lastLossRatio { get; set; }
}
For example, say i want to validate commission
property
public class PropRangeValidation : RangeAttribute
{
private readonly double _Minimum;
private readonly double _Maximum;
public PropRangeValidation(double minimum, double maximum) : base( minimum, maximum)
{
this._Minimum = minimum;
this._Maximum = maximum;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var valueStr = value?.ToString();
var valueDbl = Convert.ToDouble(valueStr);
if ((valueDbl < _Minimum || valueDbl > _Maximum) && valueStr!=null)
{
var memberName = validationContext.MemberName;
var errorMsg = string.Format(Resources.RangeViolation, valueDbl, memberName);
var errorCode = ValidationError.Required.ToString();
var error = string.Format("{0}|{1}|{2}", errorMsg, errorCode, memberName);
return new ValidationResult(error);
}
return null;
}
}
How to get commission
parent property name from ValidationContext
? i mean
public List<QuataShareClassModel> quataShareClass { get; set; }
I need to get quataShareClass
name.
Something like this:
var parentProp=ValidationContext.ParentProperty //results to `quataShareClass`