c# - 如何在 asp.net Core Razor Pages 中填充复选框列表?

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

我正在尝试了解如何在 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来自数据库的列表(为简单起见编辑了代码片段):

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

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

并在 View 中显示:

@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 < Model.Input.Hobbies.Count; 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();
    }
}

关于c# - 如何在 asp.net Core Razor Pages 中填充复选框列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58249674/

相关文章:

c# - 为什么我在模板中使用静态方法得到 CS0119?

c# - 如何克隆 UltraGridColumn (Infragistics)?

c# - 后处理程序上的部分页面模型未执行 | ASP.NET Core Razor 页面 2.0

c# - 身份验证中间件

c# - 如何返回带有状态码的响应 JSON 数据?

c# - .Net 5 Windows 和自定义身份验证

c# - 动态菜单系统的最佳方法

c# - 如何使用工作单元和存储库模式回滚事务?

entity-framework - 如何从命令行指定 dbcontext 的连接字符串

c# - ASP.NET Core 使用带有 cookieauthentication 的自定义身份验证处理程序