我阅读并使用下面的代码将其设置为模型列表,我的问题是虽然我已经为我的模型(城市)定义了数据注释属性,但它不起作用。
例如,这里有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; }
}
答案 0 :(得分:0)
没有代码可以查看您的课程有效或现在的天气。你可以这样写:
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,则可以抛出异常,并且还可以查看模型在结果中无效的原因