Как заполнить список флажков в asp.net Core Razor Pages? - PullRequest
2 голосов
/ 05 октября 2019

Я пытаюсь выяснить, как заполнить список флажков в 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();
    }
}

Иотображение в виде:

@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++)

Куда я иду?

1 Ответ

0 голосов
/ 06 октября 2019

В случае, если кто-то еще сталкивается с этой же проблемой, исправление должно было быть изменено:

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