簡體   English   中英

數據注釋不適用於自定義模型

[英]Data annotations do not work for custom model

我閱讀並使用下面的代碼將其設置為模型列表,我的問題是,盡管我為我的模型(城市)定義了數據注釋屬性,但這是行不通的。

例如,這里是3行csv文件:

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

我預計第一行會發生異常,因為城市代碼是“ 121”,它必須在1-81之間。 我也嘗試了ModelState.IsValid; 對於我的情況,它始終返回true。 如何保證該字段在有效范圍內?

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; }
    }

沒有代碼可以查看您的班級是有效的還是現在的天氣。 您可以這樣寫:

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);
}

如果此方法為true,則可以引發異常,還可以查看為什么模型在結果中無效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM