Bar*_*osz 3 c# asp.net-mvc simplemembership
我可能正在做些傻事但却找不到什么.我试图修改ASP.NET MVC 4中的简单成员资格功能.我稍微修改了随模板一起使用的RegisterModel,并添加了一个类别列表,如下所示:
public class RegisterModel
{
...
public List<SelectListItem> Categories { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在帐户控制器中我试图将一个项目添加到此列表但得到" Object reference not set to an instance of an object."错误:
[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" });
...
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
你只需要在将项添加到列表之前执行此操作,因为当您添加项时,它不会实例化为什么它给出错误
rm.Categories = new List<SelectListItem>();
Run Code Online (Sandbox Code Playgroud)
这意味着在这种方法中这样做
[AllowAnonymous]
public ActionResult Register()
{
RegisterModel rm = new RegisterModel();
rm.Categories = new List<SelectListItem>();//added line
rm.Categories.Add(new SelectListItem { Value = null, Text = "Guest" });
...
Run Code Online (Sandbox Code Playgroud)
要么
你可以在构造函数中做同样的事情RegisterModel.
public class RegisterModel
{
public RegisterModel
{
Categories = new List<SelectListItem>();//added line
}
Run Code Online (Sandbox Code Playgroud)
在类构造函数中初始化列表
public class RegisterModel
{
RegisterModel()
{
Categories = new List<SelectListItem>();
}
......
Run Code Online (Sandbox Code Playgroud)
由于您使用的是自动实现的属性 {get;set;},因此必须在构造函数中对其进行初始化.如果你不想在构造函数中做,那么你可以这样做:
public class RegisterModel
{
...
private List<SelectListItem> _Categories = new List<SelectListItem>();
private List<SelectListItem> Categories
{
get { return _Categories; }
set { _Categories = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
在使用之前,您还可以使用对象初始化List.
RegisterModel rm = new RegisterModel();
r.Categories = new List<SelectListItem>(); // like that
rm.Categories.Add(new SelectListItem { Value = null, Text = "Guest" });
Run Code Online (Sandbox Code Playgroud)
但是如果你在构造函数中初始化列表或通过私有字段 (如果不使用自动实现的属性),它会更好.因为那样你就不必在RegisterModel创建每个对象时初始化Class对象的属性.
你从来没有初始化Categories为任何东西.是的null.
将其初始化为空列表以避免错误,最好在构造函数中:
Categories = new List<SelectListItem>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1839 次 |
| 最近记录: |