【问题标题】:How to populate a check box list in asp.net Core Razor Pages?如何在 asp.net Core Razor Pages 中填充复选框列表?
【发布时间】:2020-02-03 13:49:05
【问题描述】:

我试图弄清楚如何在 asp.net Core Razor Pages 中填充复选框列表。考虑以下类:

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; }
}

然后从Page 我想从数据库中填充Hobbies 列表(为简单起见,编辑了代码sn-ps):

public class SignupModel : PageModel
{
    [BindProperty]
    public SignupPageModel Input { get; set; }

    public void OnGet()
    {
        var model = new SignupPageModel();
        model.Hobbies = _repo.GetHobbiesCheckBoxGroup();
    }
}

并在视图中显示:

@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>
 }

但是在渲染View 时出现以下错误:

NullReferenceException: Object reference not set to an instance of an object.

在这一行:

@for (var i = 0; i &lt; Model.Input.Hobbies.Count; i++)

我哪里错了?

【问题讨论】:

    标签: c# asp.net-core razor-pages


    【解决方案1】:

    如果其他人遇到同样的问题,解决方法是改变:

    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-16
      • 1970-01-01
      • 2021-08-19
      • 2018-10-29
      • 2019-04-05
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      相关资源
      最近更新 更多