C# 在控制器中填充模型,获取nullreference

C# 在控制器中填充模型,获取nullreference,c#,asp.net-core-mvc,nullreferenceexception,C#,Asp.net Core Mvc,Nullreferenceexception,嗨,我遇到了一个问题,我似乎无法解决它。我想填充模型的一部分,然后将其传递给视图,以便用户可以填充其余部分并提交 这是模型 public class SelectModel { public List<String> Scripts { get; set; } public string ScriptSelection { get; set; } public IFormFile InputFile { get; set; } } 我在model.Scri

嗨,我遇到了一个问题,我似乎无法解决它。我想填充模型的一部分,然后将其传递给视图,以便用户可以填充其余部分并提交

这是模型

public class SelectModel
{
    public List<String> Scripts { get; set; }
    public string ScriptSelection { get; set; }
    public IFormFile InputFile { get; set; }

}
我在model.Scripts.Add(“Germany”)上得到null ref异常


我以前从一个视图填充了一个模型,并将其传递回控制器,但在控制器中为我的第一个视图初始化模型时似乎遇到了问题,因为您正在调用
NULL
上的
Add
方法<代码>模型。脚本为空,因此您将得到经典的“对象引用未设置为instance”错误

在尝试添加之前,将其初始化为空列表

一种方法是使用默认构造函数,将脚本属性初始化为空列表

public class SelectModel
{
    public List<String> Scripts { get; set; }
    public string ScriptSelection { get; set; }
    public IFormFile InputFile { get; set; }

    public SelectModel()
    {
      this.Scripts =new List<string>();
    } 

}
公共类选择模型
{
公共列表脚本{get;set;}
公共字符串脚本选择{get;set;}
公共文件输入文件{get;set;}
公共模型()
{
this.Scripts=new List();
} 
}
另一个选项是在创建对象时将其初始化为空列表

var model = new SelectModel(){ Scripts =new List<string>() };
model.Scripts.Add("Germany");
var model=new SelectModel(){Scripts=new List()};
model.Scripts.Add(“德国”);
还可以使用对象/集合初始化器语法

var model = new SelectModel()
{
    Scripts = new List<string>()
    {
        "Germany", "USA"
    }
};
var model=new SelectModel()
{
脚本=新列表()
{
“德国”、“美国”
}
};

因为您正在调用
NULL
上的
Add
方法<代码>模型。脚本为空,因此您将得到经典的“对象引用未设置为instance”错误

在尝试添加之前,将其初始化为空列表

一种方法是使用默认构造函数,将脚本属性初始化为空列表

public class SelectModel
{
    public List<String> Scripts { get; set; }
    public string ScriptSelection { get; set; }
    public IFormFile InputFile { get; set; }

    public SelectModel()
    {
      this.Scripts =new List<string>();
    } 

}
公共类选择模型
{
公共列表脚本{get;set;}
公共字符串脚本选择{get;set;}
公共文件输入文件{get;set;}
公共模型()
{
this.Scripts=new List();
} 
}
另一个选项是在创建对象时将其初始化为空列表

var model = new SelectModel(){ Scripts =new List<string>() };
model.Scripts.Add("Germany");
var model=new SelectModel(){Scripts=new List()};
model.Scripts.Add(“德国”);
还可以使用对象/集合初始化器语法

var model = new SelectModel()
{
    Scripts = new List<string>()
    {
        "Germany", "USA"
    }
};
var model=new SelectModel()
{
脚本=新列表()
{
“德国”、“美国”
}
};

您必须初始化列表。差不多

public class SelectModel
{
    public List<String> Scripts { get; set; } = new List<String>();
    public string ScriptSelection { get; set; }
    public IFormFile InputFile { get; set; }

} 
公共类选择模型
{
公共列表脚本{get;set;}=new List();
公共字符串脚本选择{get;set;}
公共文件输入文件{get;set;}
} 
或者在控制器动作中

public IActionResult Index()
    {
        SelectModel model = new SelectModel();
        //initialization of the list Before usage
        model.Scripts = new List<String>();
        model.Scripts.Add("Germany");

        return View(model);
    }
public IActionResult Index()
{
SelectModel model=新建SelectModel();
//使用前列表的初始化
model.Scripts=新列表();
model.Scripts.Add(“德国”);
返回视图(模型);
}

您必须初始化列表。差不多

public class SelectModel
{
    public List<String> Scripts { get; set; } = new List<String>();
    public string ScriptSelection { get; set; }
    public IFormFile InputFile { get; set; }

} 
公共类选择模型
{
公共列表脚本{get;set;}=new List();
公共字符串脚本选择{get;set;}
公共文件输入文件{get;set;}
} 
或者在控制器动作中

public IActionResult Index()
    {
        SelectModel model = new SelectModel();
        //initialization of the list Before usage
        model.Scripts = new List<String>();
        model.Scripts.Add("Germany");

        return View(model);
    }
public IActionResult Index()
{
SelectModel model=新建SelectModel();
//使用前列表的初始化
model.Scripts=新列表();
model.Scripts.Add(“德国”);
返回视图(模型);
}

doh!谢谢,似乎在那里有一个盲点几个小时了,似乎认为创建模型也创建了其中的东西。doh!谢谢,似乎有一个盲点在那里几个小时,似乎有想法创造模型也创造了它的东西。