2016-07-08 3 views
0

以下のコードでモデルのリストを読み込んで設定します。私のモデル(都市)のデータアノテーション属性を定義していますが、それは機能しません。私は都市コードは1~81の間でなければならない「121」であるため、例外は最初の行で発生する期待データアノテーションがカスタムモデルでは機能しない

CityName CityCode DistrictName ZipCode 
Adana 121 Alada? 1720 
Adana 1 Ceyhan 1920 
Adana 1 Ceyhan 1930 

:例えば

は、ここでは、CSVファイルの3行です。私もModelState.IsValidを試しました。私の場合は常に真実を返します。このフィールドが有効範囲内にあることをどのように保証できますか?

public List<City> readFileToList(string filename, params KeyValuePair<string, object>[] queryparams) 
{ 
    string fullName = Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data", filename); 
    string[] lines = System.IO.File.ReadAllLines(fullName); 
    List<City> cities = lines.Skip(1).Select(l => new City 
    { 
     name = l.Split(',')[0], 
     cityCode = Convert.ToInt32(l.Split(',')[1]), 
     district = l.Split(',')[2], 
     zipCode = l.Split(',')[3], 
    }).ToList(); 
    return cities; 
} 

とこちらのモデルの定義である:

public class City 
    { 
     [Required] 
     [StringLength(50)] 
     public string name { get; set; } 

     [Required] 
     [Range(0,81)] 
     public int cityCode { get; set; } 

     [Required] 
     [StringLength(60)] 
     public string district { get; set; } 

     [Required] 
     [Range(0, 99999)] 
     public string zipCode { get; set; } 
    } 

答えて

0

あなたのクラスは、現在有効かで乗り切る参照するには何のコードがありません。お使いのモデルが結果

では有効ではありません、なぜあなたは、このメソッドがtrueの場合に例外をスローしても見ることができます

public bool ValidateCity(City city,out List<ValidationResult> results)  
{ 
    var context = new ValidationContext(city); 
    results = new List<ValidationResult>(); 

    return Validator.TryValidateObject(city, context, results, true); 
} 

:あなたはこのような何かを書くことができます

関連する問題