c# - 将项目添加到 List<T>

标签 c# asp.net-mvc simplemembership

我可能正在做一些愚蠢的事情,但无法找出是什么。我正在尝试修改 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/

相关文章:

asp.net-mvc - ASP.NET SimpleMembership 中密码的自定义验证

Azure 网站 - 跨子域共享登录状态

javascript - "Can' t 将多个参数绑定(bind)到web api和angularJs中的请求's content."

c# - MVC5 对象引用未设置为 Scripts.Render 上的对象实例

c# - '反序列化操作的回复消息正文时出错......' - 对于我调用的每个方法

c# - 值的范围 - 如何在没有 if 循环的情况下确定?

asp.net-mvc - 自连接表上的 Linq 嵌套选择查询

c# - SimpleMemberShipProvider,将多个 PropertyValue 与自定义数据库表一起使用

c# - Selenium/Chrome - 选择没有 ID 的复选框输入

c# - 反射器中的列表