0

電話番号を認証しようとしています。そのため、次のようなデータ注釈を宣言します。

    [IsCellAcceptable(ErrorMessageResourceName = "IsCellAcceptable", ErrorMessageResourceType = typeof(Resources.PageResources))]
    [DataType(DataType.PhoneNumber)]
    [Display(Name = "UserCell", ResourceType = typeof(Resources.PageResources))]
    public String Cell { get; set; }

Cell が 0 999 999 99 99 に等しい場合、それを有効なものとして返し、09999999999 のように保存したいのですが、IsValid 関数はそれを検証するだけで、操作することはできません。

public class IsCellAcceptableAttribute : ValidationAttribute
{
    public IsCellAcceptableAttribute()
        : base()
    {

    }

    public override bool IsValid(object value)
    {
        if (value == null)
            return true;
        if (value == "")
            return true;

        string phoneOutput = string.Empty;
        string phoneInput = Convert.ToString(value);
        phoneInput = phoneInput.Replace(" ", "");

        foreach (char ch in phoneInput)
        {
            if (Char.IsNumber(ch))
            {
                phoneOutput += ch;
            }
            else
            {
                return false;
            }
        }

        if (phoneOutput.Length <= 14 && phoneOutput.Length >= 10)
        {
            return true;
        }

        return false;
    }

私の質問は、検証時にオブジェクトを操作するにはどうすればよいですか?

4

1 に答える 1

2

後で値を操作してみませんか?

if (IsValid(value)) 
{
        // Manipulate here
        phoneNumber = phoneNumber.Replace(" ", "");
}

else
{
        // Not valid
}
于 2012-11-19T01:15:05.157 に答える