2010-08-02 3 views
7

나는 CustomValidation를 추가하고ASP.NET MVC CustomValidation에서 오류 멤버 키를 어떻게 지정합니까?

Html.ValidationMessageFor (m => m.SubleaseCompany)

[CustomValidation(typeof(CreateSpaceModelValidation), "ValidateCreateSpaceModel")] 
public class CreateSpaceModel 
{ 
    public Building Building { get; set; } 
    public Space Space { get; set; } 

    public string SubleaseCompany { get; set; } 
} 

public class CreateSpaceModelValidation 
{ 
    public static ValidationResult ValidateCreateSpaceModel(CreateSpaceModel model) 
    { 
     return new ValidationResult("You should specify Sublease Contact", new[] { "SubleaseCompany" }).; 
    } 
} 

나는에 ValidationResult 생성자에 대한 두 번째 인수를 사용하고 있습니다 (memberNames에 대한 오류를 반환 할 수 있도록하기 위해 노력하고있어)하지만 이것은 효과가없는 것 같습니다.

+0

당신은 어떤 경로로 이것을 끝 맺었습니까? – Aaron

답변

8

MVC 팀이 MemberNames 매개 변수에 대한 기능을 구현하지 않은 것처럼 보입니다. 당신이 이 멤버 이름의는 IEnumerable에 소요되는 모든 ValidationResult의 두 번째 생성자 오버로드를 사용하는 유혹 수 있습니다, 어떤 상황에서 http://devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

.... (가)에서 발휘 다음을 참조하십시오. 예를 들어, 는 비교되는 두 필드에 오류 메시지를 표시 할 것인지 결정할 수 있습니다, 그래서 당신은 에 코드를 변경하려면이 :

return new ValidationResult(
    FormatErrorMessage(validationContext.DisplayName), 

새 [] {validationContext.MemberName, OtherProperty});

코드를 실행하면 은 전혀 차이가 없습니다. 이 오버로드는 이고 다른 곳에서는 아마도 이지만 .NET Framework에서는 MVC 프레임 워크가 ValidationResult.MemberNames를 완전히 무시하기 때문에 입니다.

관련 문제