Asp.net MVC上载的CSV文件数据显示为json

Asp.net MVC上载的CSV文件数据显示为json,asp.net,csv,Asp.net,Csv,我试图上传一个csv文件到我的应用程序,但这并没有显示所有的行,我只得到一行这里是我的代码 模型 控制器 [HttpPost] public ActionResult AddparcelView(FileUploadViewModel filedata) { var attachedFile = System.Web.HttpContext.Current.Request.Files["CsvDoc"]; if (attachedFile == n

我试图上传一个csv文件到我的应用程序,但这并没有显示所有的行,我只得到一行这里是我的代码

模型

控制器

[HttpPost]
    public ActionResult AddparcelView(FileUploadViewModel filedata)
    {
        var attachedFile = System.Web.HttpContext.Current.Request.Files["CsvDoc"];
        if (attachedFile == null || attachedFile.ContentLength <= 0) return Json(null);
        var csvReader = new StreamReader(attachedFile.InputStream);
        var uploadModelList = new List<FileUploadViewModel>();
        string inputDataRead;
        var values = new List<string>();
        var uploadModelRecord = new FileUploadViewModel();
        var jsonToOutput = "";
        while ((inputDataRead = csvReader.ReadLine()) != null)
        {
            values.Add(inputDataRead.Trim().Replace(" ", "").Replace(",", " "));

        }
        values.Remove(values[0]);
        values.Remove(values[values.Count - 1]);
        var i = 0;
            foreach (var value in values)
            {
               i++;
                var eachValue = value.Split(' ');
                uploadModelRecord.Name = eachValue[0] != "" ? eachValue[0] : string.Empty;
                uploadModelRecord.School = eachValue[1] != "" ? eachValue[1] : string.Empty;
                uploadModelRecord.Age = eachValue[2] != "" ? eachValue[2] : string.Empty;
                uploadModelRecord.DOB = eachValue[3] != "" ? eachValue[3] : string.Empty;
                uploadModelRecord.ParentName = eachValue[4] != "" ? eachValue[4] : string.Empty;
            //jsonToOutput = JsonConvert.SerializeObject(uploadModelRecord, Formatting.Indented);
            Console.WriteLine(i);

            }


        return Json(uploadModelRecord);
    }

因此,这只是我用json显示的一行数据,但我没有用其他4行获得完整的json数组。请帮助我,谢谢你在循环的每次迭代中都使用相同的实例
uploadModelRecord
。在第一次迭代中,它获取第一行的值。在第二次迭代中,这些值被第二行的值覆盖。等等

在每次迭代中创建一个新实例,并将它们添加到列表中。返回序列化列表

public ActionResult AddparcelView(FileUploadViewModel filedata)
{
    ...
    //Remove line for variable uploadModelRecord. 
    var uploadModelRecords = new List<FileUploadViewModel>(); //List instead of single element.
    foreach (var value in values)
    {
        i++;
        var eachValue = value.Split(' ');
        var uploadModelRecord = new FileUploadViewModel(); //Variable for current line.
        uploadModelRecord.Name = eachValue[0] != "" ? eachValue[0] : string.Empty;
        uploadModelRecord.School = eachValue[1] != "" ? eachValue[1] : string.Empty;
        uploadModelRecord.Age = eachValue[2] != "" ? eachValue[2] : string.Empty;
        uploadModelRecord.DOB = eachValue[3] != "" ? eachValue[3] : string.Empty;
        uploadModelRecord.ParentName = eachValue[4] != "" ? eachValue[4] : string.Empty;
        //jsonToOutput = JsonConvert.SerializeObject(uploadModelRecord, Formatting.Indented);
        Console.WriteLine(i);
        uploadModelRecords.Add(uploadModelRecord);  //Here you add the variable for current line to the list.
    }

    return Json(uploadModelRecords); //Return the list instead of a single instance.
}
public ActionResult AddparcelView(文件上传视图模型文件数据)
{
...
//删除变量uploadModelRecord的行。
var uploadModelRecords=new List();//列表而不是单个元素。
foreach(值中的var值)
{
i++;
var eachValue=价值分割(“”);
var uploadModelRecord=新文件uploadViewModel();//当前行的变量。
uploadModelRecord.Name=eachValue[0]!=“eachValue[0]:string.Empty;
uploadModelRecord.School=eachValue[1]!=“”?eachValue[1]:string.Empty;
uploadModelRecord.Age=eachValue[2]!=“”?eachValue[2]:string.Empty;
uploadModelRecord.DOB=eachValue[3]!=“”?eachValue[3]:string.Empty;
uploadModelRecord.ParentName=eachValue[4]!=“”?eachValue[4]:string.Empty;
//jsonToOutput=JsonConvert.SerializedObject(uploadModelRecord,Formatting.Indented);
控制台写入线(i);
uploadModelRecords.Add(uploadModelRecord);//这里您将当前行的变量添加到列表中。
}
返回Json(uploadModelRecords);//返回列表而不是单个实例。
}

我试过使用var uploadModelRecords=new List();正如你给我的,这显示了一行多行的相同数据,我的意思是相同的行复制,直到每个值的长度实际工作现在我没有一行你提到的谢谢@diana
Age: "sdfdsf"
DOB: "test"
Name:"mohammad2"
ParentName:"test"
School:"32"
public ActionResult AddparcelView(FileUploadViewModel filedata)
{
    ...
    //Remove line for variable uploadModelRecord. 
    var uploadModelRecords = new List<FileUploadViewModel>(); //List instead of single element.
    foreach (var value in values)
    {
        i++;
        var eachValue = value.Split(' ');
        var uploadModelRecord = new FileUploadViewModel(); //Variable for current line.
        uploadModelRecord.Name = eachValue[0] != "" ? eachValue[0] : string.Empty;
        uploadModelRecord.School = eachValue[1] != "" ? eachValue[1] : string.Empty;
        uploadModelRecord.Age = eachValue[2] != "" ? eachValue[2] : string.Empty;
        uploadModelRecord.DOB = eachValue[3] != "" ? eachValue[3] : string.Empty;
        uploadModelRecord.ParentName = eachValue[4] != "" ? eachValue[4] : string.Empty;
        //jsonToOutput = JsonConvert.SerializeObject(uploadModelRecord, Formatting.Indented);
        Console.WriteLine(i);
        uploadModelRecords.Add(uploadModelRecord);  //Here you add the variable for current line to the list.
    }

    return Json(uploadModelRecords); //Return the list instead of a single instance.
}