我可能正在做一些愚蠢的事情,但无法找出是什么。我正在尝试修改 ASP.NET MVC 4 中的简单成员资格功能。我稍微修改了模板附带的 RegisterModel,并向其添加了一个类别列表,如下所示:
public class RegisterModel
{
...
public List<SelectListItem> Categories { get; set; }
}
然后在帐户 Controller 中,我试图将一个项目添加到此列表,但出现“对象引用未设置为对象的实例。
”错误:
[AllowAnonymous]
public ActionResult Register()
{
RegisterModel rm = new RegisterModel();
//SelectListItem guestCategory = new SelectListItem();
//guestCategory.Value = null;
//guestCategory.Text = "Guest";
rm.Categories.Add(new SelectListItem { Value = null, Text = "Guest" });
...
有什么想法吗?
最佳答案
你只需要在将项目添加到列表之前执行此操作,因为当你添加项目时它不会被实例化,这就是为什么它会给出错误
rm.Categories = new List<SelectListItem>();
这意味着在这个方法中这样做
[AllowAnonymous]
public ActionResult Register()
{
RegisterModel rm = new RegisterModel();
rm.Categories = new List<SelectListItem>();//added line
rm.Categories.Add(new SelectListItem { Value = null, Text = "Guest" });
...
或
你可以在 RegisterModel
的构造函数中做同样的事情。
public class RegisterModel
{
public RegisterModel
{
Categories = new List<SelectListItem>();//added line
}
关于c# - 将项目添加到 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14255177/