加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在文件上传时使用CSVHelper

发布时间:2020-12-15 04:30:57 所属栏目:百科 来源:网络整理
导读:我试图使用CSVhelper插件来读取上传的CSV文件.这是我的modelBinder类: public class SurveyEmailListModelsModelBinder : DefaultModelBinder{ public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
我试图使用CSVhelper插件来读取上传的CSV文件.这是我的modelBinder类:
public class SurveyEmailListModelsModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
    {
        var csv = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        var file = ((csv.RawValue as HttpPostedFileBase[]) ?? Enumerable.Empty<HttpPostedFileBase>()).FirstOrDefault();

        if (file == null || file.ContentLength < 1)
        {
            bindingContext.ModelState.AddModelError(
                "","Please select a valid CSV file"
            );
            return null;
        }

        using (var reader = new StreamReader(file.InputStream))
        using (var csvReader = new CsvReader(reader))
        {
            return csvReader.GetRecords<SurveyEmailListModels>().ToArray();
        }
    }
}

这些是我要映射到的对象:

public class SurveyEmailListModels
{
    [Key]
    [CsvField(Ignore = true)]
    public int SurveyEmailListId { get; set; }

    [CsvField(Index = 0)]
    public int ProgramId { get; set; }

    [CsvField(Index = 1)]
    public virtual SurveyProgramModels SurveyProgramModels { get; set; }

    [CsvField(Index = 2)]
    public string SurveyEmailAddress { get; set; }

    [CsvField(Index = 3)]
    public bool SurveyResponded { get; set; }

}

在Visual Studio调试器中,我收到一个错误:

> base {“在访问数据之前必须先在读取器上调用read”.)CsvHelper.CsvHelperException {CsvHelper.CsvReaderException}

解决方法

没有使用插件,但错误信息似乎很清楚.在访问结果之前,必须有一个Read()函数调用.尝试将您的代码更改为如下所示:
using (var reader = new StreamReader(file.InputStream))
using (var csvReader = new CsvReader(reader))
{
    csvReader.Read();
    return csvReader.GetRecords<SurveyEmailListModels>().ToArray();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读