[英]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.