C# 如何在asp.net核心页面中填充复选框列表?
我试图找出如何在asp.net核心页面中填充复选框列表。考虑下面的类:C# 如何在asp.net核心页面中填充复选框列表?,c#,asp.net-core,razor-pages,C#,Asp.net Core,Razor Pages,我试图找出如何在asp.net核心页面中填充复选框列表。考虑下面的类: public class SignupPageModel { public string UserName { get; set; } public string Password { get; set; } public List<CheckBoxGroup> Hobbies{ get; set; } } public class CheckBoxGroup { public
public class SignupPageModel
{
public string UserName { get; set; }
public string Password { get; set; }
public List<CheckBoxGroup> Hobbies{ get; set; }
}
public class CheckBoxGroup
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsSelected { get; set; }
}
并在视图中显示:
@for (var i = 0; i < Model.Input.Hobbies.Count; i++)
{
<div class="form-check">
<input type="checkbox" asp-for="@Model.Input.Hobbies[i].IsSelected"/>
<label asp-for="@Model.Input.Hobbies[i].IsSelected">@Model.Input.Hobbies[i].Name</label>
<input type="hidden" asp-for="@Model.Input.Hobbies[i].Id"/>
<input type="hidden" asp-for="@Model.Input.Hobbies[i].Name"/>
</div>
}
(变量i=0;i视图时
会出现以下错误:
NullReferenceException:对象引用未设置为对象的实例。
在这一行:
@for(var i=0;i
我哪里出错了?如果其他人遇到同样的问题,解决方法是更改:
public class SignupModel : PageModel
{
[BindProperty]
public SignupPageModel Input { get; set; }
public void OnGet()
{
var model = new SignupPageModel();
model.Hobbies = _repo.GetHobbiesCheckBoxGroup();
}
}
为此:
public class SignupModel : PageModel
{
[BindProperty]
public SignupPageModel Input { get; set; }
public void OnGet()
{
Input = new SignupPageModel();
Input.Hobbies = _repo.GetHobbiesCheckBoxGroup();
}
}
public class SignupModel : PageModel
{
[BindProperty]
public SignupPageModel Input { get; set; }
public void OnGet()
{
Input = new SignupPageModel();
Input.Hobbies = _repo.GetHobbiesCheckBoxGroup();
}
}