다음 클래스가 있습니다. 예를 들어 조금 단순화되었습니다.유효성 검사 대상 객체를 기반으로하는 사용자 정의 속성 이름
class LineInfo
{
Id,
LineNumber,
SubAccountNumer,
MobileNumber
}
class SuspendLinesVM{
public List<LineInfo> Lines{ get;set; }
}
내 작업에서 SuspendLinesVM을 수신하고 모든 라인이 클라이언트로부터 동적으로 생성됩니다. 양식의 구체적인 LineInfo에 속하는 각 요소는 템플릿 'lineid {Id} _ElementName'과 이름이 있습니다.
lineid0001_SubAccountNumer
lineid0001_MobileNumber
lineid0021_LineNumber에게
lineid0001_LineNumber
lineid0021_SubAccountNumer
lineid0021_MobileNumber
,369을 : 그래서 그들은 같은 형태로 나에게 온다유효성 검사 중에 오류가 발생하면 뷰에서 유효하지 않은 필드를 강조 표시하기 위해 요청에 따라 실패한 속성을 설정하는 방법이 필요합니다.
나는 혼란스러워하는 질문을 남겼습니다.
public class LineInfoValidator: AbstractValidator<LineInfo>
{
public LineInfoValidator()
{
RuleFor(m => m.LineNumber)
.NotEmpty().WithMessage("Line # is required").OverridePropertyName(???)
.InclusiveBetween(1, 9999).WithMessage("Line # must be in range [1, 9999]").OverridePropertyName(???)
...
내가 * (예, propertyName 형식) => 반환 및 String.format 같은 것을 할 수있는 방법이 필요합니다 ('lineid_ {0} _ {1}', instance.Id, propertyName 형식) *.
아이디어가 있으십니까? 이렇게하면
public class SelectedLinesVMValidator : AbstractValidator<SelectedLinesVM>
{
public SelectedLinesVMValidator()
{
RuleFor(x=>x.Lines).SetCollectionValidator(new LineInfoValidator());
}
}
, 다음 as per the documentation 다시 오류의 컬렉션을 얻을 것이다 : 당신이 FluentValidator을 사용하고 있는지, 당신이 그렇게 같은 SuspendedLinesVM 개체의 컬렉션 검사기를 설정 할 수 있어야한다 감안할 때
.그러나 내 컬렉션의 모든 LineInfo에 대한 귀하의 경우 각 속성 이름은 'LineNumber', 'SubAccountNumer'등과 동일합니다. 속성 이름은 'lineid0001_LineNumber'와 같아야하므로보기는 오류가 속한 LineInfo를 구분하지 않으며 오류를 전혀 렌더링하지 않습니다. 단지 그것이 그렇게 쉬웠다면 :) – Madman