在C#从模型添加列表到控制器(MVC)

问题描述:

型号代码:在C#从模型添加列表到控制器(MVC)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace testing.Models 
{ 
    public class SchemaDefinition 
    { 
     public List<RecordInfo> Input { get; set; } 
     public List<RecordInfo> Output { get; set; } 
    } 
    public class RecordInfo 
    { 
     public string RecordId { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public List<FieldInfo> FieldInfo { get; set; } 

    } 


    public class FieldInfo 
    { 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public int Length { get; set; } 
     public int Start { get; set; } 
     public int End { get; set; } 
     public string Format { get; set; } 

    } 
} 

控制器代码

var SchemaDefintion = new SchemaDefinition(); 



        for (int Currentsheet = 1; Currentsheet <= WorksheetCount; Currentsheet=Currentsheet+1) 
        { 

         Excel.Worksheet worksheet = workbook.Sheets[Currentsheet]; 
         string SheetName = worksheet.Name; 

         if (SheetName.Substring(0, 2) != "A" || SheetName.Substring(0, 2) != "B") 
         { 
          //Error that invalid excel sheet 
         } 

         Excel.Range range = worksheet.UsedRange; 



         var ListFields = new List<FieldInfo>(); 

         for (int row = 2; row <= range.Rows.Count; row++) 
         { 



          var Fieldproperties = new FieldInfo {Name = ((Excel.Range)range.Cells[row, 1]).Text, Description = ((Excel.Range)range.Cells[row, 2]).Text, 
                     Length =Convert.ToInt32(((Excel.Range)range.Cells[row, 3]).Text), 
                     Start=Convert.ToInt32(((Excel.Range)range.Cells[row, 4]).Text), 
                     End=Convert.ToInt32(((Excel.Range)range.Cells[row, 5]).Text), 
                     Format= ((Excel.Range)range.Cells[row, 6]).Text 
                    }; 

         ListFields.Add(Fieldproperties); 
         } 


         SchemaDefintion.Input.Add(new testing.Models.RecordInfo { RecordId = "A", Name = "header", Description = "description", FieldInfo = ListFields }); 

当我把调试在我的代码是在抛出一个错误line below

SchemaDefintion.Input.Add(new testing.Models.RecordInfo { RecordId = "A", Name = "header", Description = "description", FieldInfo = ListFields });` 

The Error d作为

'/'应用程序中的服务器错误。

________________________________________对象引用未设置为对象的实例。说明:执行当前Web请求期间发生未处理的异常 。请查阅 堆栈跟踪以获取有关该错误的更多信息以及代码中源代码的起始位置 。

异常详细信息:System.NullReferenceException:对象引用不是 设置为对象的实例。

+3

可能重复[什么是NullReferenceException,以及如何解决它?](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix -it) –

+1

输入和输出属性未初始化,因此,当您尝试添加时,它们都为空... – Tistkle

+0

我们如何初始化我的MVC代码的输入/输出属性。我只是新手! – Jayendran

感谢@Tistkle

我只是初始化相应的输入和输出在我控制器代码

SchemaDefintion.Input = new List<RecordInfo>(); 

SchemaDefintion.Output = new List<RecordInfo>(); 

现在它的正常工作。