C#模型验证抛出“无法从System.DateTime转换为System.Array”

时间:2017-03-28 19:40:16

标签: c# asp.net-mvc entity-framework datetime data-annotations

我正在尝试使用LinqToExcel从excel插入表格,当我打电话时

ValidateModel(u);

它抛出异常:

  

无法从System.DateTime转换为System.Array

我在viewmodel上使用DataAnnotations。

ViewModel中的日期时间:

[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime FECHA_ADQ { get; set; }

控制器:

foreach (var a in excel.Worksheet<ViewModel>(sheet.First())) 
{
    //Validations//
    try 
    {
        Context db = new Context();
        ViewModel u = a;
        ModelState.Clear();
        ValidateModel(u);

        //Insert//
    }
    catch(Exception)
    {
        // ...
    }
}

excel文件中的日期时间:

enter image description here

这是调试器上的样子:

enter image description here

1 个答案:

答案 0 :(得分:0)

我无法用excel解决这个问题所以我刚刚在映射到基本模型之后验证它是否有效。

ModelState.Clear();

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<ViewModel, Model>();
});

IMapper mapper = config.CreateMapper();
var inv = mapper.Map<ViewModel, Model>(u);

if (inv.FECHA_ADQ.Year <= 2005) {
    errors.AppendLine("Serial: " + a.SERIAL + " Error on Row: " + row + " Cause: Invalid Date.");
    counter++;
} else {
    ValidateModel(inv);
    Context.ModelDB.Add(inv);
    Context.SaveChanges();
}