2017-05-29 16 views
0

モデルのコード: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 }); 

私は私のコードでデバッグを入れたとき、それは時にエラーがスローされます下の行

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

エラーdエスケープとして

'/'アプリケーションのサーバーエラーです。

________________________________________オブジェクト参照がオブジェクトのインスタンスに設定されていません。説明:現在のWeb要求の実行中に未処理の例外が発生しました。 エラーの詳細とコード内にある の詳細については、 スタックトレースを確認してください。

例外の詳細:System.NullReferenceException:オブジェクト参照ではない オブジェクトのインスタンスに設定します。

+3

[NullReferenceExceptionとは何か、それを修正するにはどうすればいいですか?](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) –

+1

入力プロパティと出力プロパティが初期化されていないため、追加しようとすると両方ともnullになります。 – Tistkle

+0

MVCコードの入出力プロパティを初期化するにはどうすればよいですか? – Jayendran

答えて

0

私はちょうど今、それがうまく働いて

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

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

コントローラー・コードに対応する入力と出力を初期化

@Tistkle感謝。

関連する問題