嗨,我遇到了问题,而我似乎无法解决问题。我想填充模型的一部分然后将其传递给视图,以便用户可以填充其余部分并提交。
这是模型
public class SelectModel
{
public List<String> Scripts { get; set; }
public string ScriptSelection { get; set; }
public IFormFile InputFile { get; set; }
}
这是我试图在控制器中填充列表的地方
public IActionResult Index()
{
SelectModel model = new SelectModel();
model.Scripts.Add("Germany");
return View(model);
}
我在model.Scripts.Add(“Germany”);
获得了null引用异常我已经从视图中填充了一个模型并将其传递回控制器,但我似乎在第一个视图中在控制器中初始化模型时遇到了问题
答案 0 :(得分:3)
因为您在Add
上调用NULL
方法。 model.Scripts
为NULL,因此您将获得经典&#34; 对象参考未设置为instanc e&#34;错误
在尝试添加之前将其初始化为空列表。
一种方法是使用默认构造函数,将Scripts属性初始化为空列表。
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>();
}
}
另一个选择是在创建对象时将其初始化为空列表
var model = new SelectModel(){ Scripts =new List<string>() };
model.Scripts.Add("Germany");
您也可以使用object / collection initializator语法
var model = new SelectModel()
{
Scripts = new List<string>()
{
"Germany", "USA"
}
};
答案 1 :(得分:2)
您必须初始化列表。像
这样的东西public class SelectModel
{
public List<String> Scripts { get; set; } = new List<String>();
public string ScriptSelection { get; set; }
public IFormFile InputFile { 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);
}