1

asp.net 3.5 Web サービスでカスタム ValidationAttribute を作成できません。すべて問題ないようです。コンパイルして実行します。作成したカスタム属性を入力しません。Msdn のドキュメント ( http://msdn.microsoft.com/en-us/library/cc668224(v=vs.90).aspx ) には、IsValid メソッドをオーバーライドして検証する必要があると記載されていますが、それでも入力されませんIsValid。構成に問題があると思いますが、コード atm に他の欠陥は見当たりません。

だから、ここにウェブサービスコードがあります

    [WebMethod]
    [Authorize("me")]
    public string test()
    {
        return "Here I am";
    }

これは ValidationAttribute です

public class AuthorizeAttribute : ValidationAttribute { public string me { get; プライベートセット; } public AuthorizeAttribute(string me) { if (string.IsNullOrEmpty(me)) { throw new ArgumentNullException("Not me!"); }

        this.me = me;
    }

    public override bool IsValid(object value)
    {
        bool result = false;
        return result;
    }


}

webmethod が実行される前に、Constructor (少なくともそれ!) に入り、次に IsValid メソッドに入りますが、そうではありません。

どこにエラーがあると言えますか?

ありがとう

/スボール

ああ、この質問を適切にフォーマットできないようです。ごめん

4

1 に答える 1

0

以下は私のプロジェクトのコードです。これが機能し、実装されているので役立つかどうかを確認してください

protected override ValidationResult IsValid(object value,
                                            ValidationContext validationContext)
{
    if (value == null || string.IsNullOrWhiteSpace(value.ToString()))
    {
        var property = validationContext.ObjectInstance.GetType()
            .GetProperty(_fieldName);

        var propertyValue = property.GetValue(validationContext.ObjectInstance, null);


        if (Validate(propertyValue))
        {
            return new ValidationResult(
                string.Format(ErrorMessageString, validationContext.DisplayName));
        }
    }
    return ValidationResult.Success;
}
于 2013-02-01T07:06:18.450 に答える