2

私は次のクラスを持っています:

public class Reference : AuditableTable
{
     [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")]
     [DisplayName("Order")]
     public int Order { get; set; 
}

MVC では、Range チェックにより、ユーザーが不正なデータを入力するのを防ぐ必要があります。ただし、MVC フロント エンドを通過しない他のコードでは、999 などの値を入力できます。これをクラス レベルでチェックするのは正常で、どのように実装できますか?

4

3 に答える 3

0

あなたはこれを使うことができます:

private bool ValidateModel(dynamic model)
{
   var validationResults = new List<ValidationResult>();
   var ctx = new ValidationContext(model, null, null);
   return Validator.TryValidateObject(model, ctx, validationResults, true);
}

http://msdn.microsoft.com/en-us/library/dd411772.aspx

動的ではなく、任意のモデルタイプを配置できます。

于 2012-08-25T08:30:00.883 に答える
0
 public class Reference : AuditableTable
    {
        [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")]
        [DisplayName("Order")]
        public int Range { get; 
        set { 
       if((value < 0) || (value > 99))
        {
        throw new Exception(string.Format("{0} must be between 0 and 99",value.ToString()));
        }
        else
        {
        Range = value;
        }
        }
    }
于 2012-08-25T08:30:35.940 に答える
0

クライアント側でフィールドを検証する場合は、バリデーターを使用する必要があります。サーバー検証の場合、このコードは機能するはずです。私はasp.net MVCについて話している。

于 2012-08-25T08:26:27.220 に答える