【问题标题】:How can I make this CheckBox list in asp.net work?如何使 asp.net 中的此 CheckBox 列表工作?
【发布时间】:2017-11-24 21:42:25
【问题描述】:

我开始在 Razor Pages 中编写一些代码,并且我想创建一个 CheckBox 列表,但这不起作用。 我的 (page).cshtml.cs 文件中设置列表的代码:

public List<ModelForCheckBoxList> Kontakty = new List<ModelForCheckBoxList>
    {
        new ModelForCheckBoxList{Id = 1, Name = "E-Mail", IsChecked = false },
        new ModelForCheckBoxList{Id = 2, Name = "Telefon", IsChecked = false },
        new ModelForCheckBoxList{Id = 3, Name = "Osobisty", IsChecked = false }
    };

我的 (page).cshtml 文件中的代码必须显示这些复选框:

<div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.Kontakt)
            @for (int index = 0; index < Model.Kontakty.Count; index++)
                {
                <div class="form-control">
                    @Html.HiddenFor(x => x.Kontakty[index].Id)
                    @Html.CheckBoxFor(x => x.Kontakty[index].IsChecked)
                    @Html.DisplayFor(x => x.Kontakty[index].Name)
                </div>
                }
        </div>

再次从我的 (page).cshtml.cs 我尝试在我的对象上设置所选复选框:

Uczestnik.Kontakt = Kontakty.Where(x => x.IsChecked).Select(x => x.Name).ToList();

我不知道为什么这不起作用。 感谢您的帮助

编辑:我忘了说哪里出了问题。当我在

上设置刹车点时
Uczestnik.Kontakt = Kontakty.Where(x => x.IsChecked).Select(x => x.Name).ToList();

它表明 Kontakty 中没有任何项目的 isChecked 值为 true,即使我检查它并单击发送,该代码也在 OnPost 方法中

EDIT2:这里我展示了更多代码

public class AnkietaGlownaModel : PageModel
{
    public Uczestnik Uczestnik { get; set; }


    public List<ModelForCheckBoxList> Kontakty = new List<ModelForCheckBoxList>
    {
        new ModelForCheckBoxList{Id = 1, Name = "E-Mail", IsChecked = false },
        new ModelForCheckBoxList{Id = 2, Name = "Telefon", IsChecked = false },
        new ModelForCheckBoxList{Id = 3, Name = "Osobisty", IsChecked = false }
    };

    public void OnGet()
    {

    }

    public ActionResult OnPost()
    {
        if (!ModelState.IsValid)
            return Page();

        Uczestnik.Kontakt = Kontakty.Where(x => x.IsChecked).Select(x => x.Name).ToList();

        return RedirectToPage("/Index", Uczestnik);
    }
}

这是来自我的 AnkietaGlowna.cshtml:

<form method="post">
<div class="panel panel-default">
    <div class="panel-heading text-center"><h4>Ankieta dla klientów</h4></div>
    <div class="panel-body" style="background-color: lightgrey">
        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.Imie)
            @Html.TextBoxFor(x => x.Uczestnik.Imie, new { @class = "form-control" })
            @Html.ValidationMessageFor(x => x.Uczestnik.Imie, null, new { @class = "text-danger"})
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.Plec)
            @Html.DropDownListFor(x => x.Uczestnik.Plec, new[] {

               new SelectListItem()
               {
                   Text = "Mężczyzna",
                   Value = "Mężczyzna"
               },
               new SelectListItem()
               {

                   Text = "Kobieta",
                   Value = "Kobieta"
               },
               new SelectListItem()
               {
                   Text = "Nie podaję",
                   Value = "Nie Podano",
                   Selected = true
               } }, new { @class = "form-control" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.Email)
            @Html.TextBoxFor(x => x.Uczestnik.Email, new { @class = "form-control" })
            @Html.ValidationMessageFor(x => x.Uczestnik.Email, null, new { @class = "text-danger" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.NumerTelefonu)
            @Html.TextBoxFor(x => x.Uczestnik.NumerTelefonu, new { @class = "form-control" })
            @Html.ValidationMessageFor(x => x.Uczestnik.NumerTelefonu, null, new { @class = "text-danger" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.Ulica)
            @Html.TextBoxFor(x => x.Uczestnik.Ulica, new { @class = "form-control" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.NumerDomu)
            @Html.TextBoxFor(x => x.Uczestnik.NumerDomu, new { @class = "form-control" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.NumerMieszkania)
            @Html.TextBoxFor(x => x.Uczestnik.NumerMieszkania, new { @class = "form-control" })
            @Html.ValidationMessageFor(x => x.Uczestnik.NumerMieszkania, null, new { @class = "text-danger" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.KodPocztowy)
            @Html.TextBoxFor(x => x.Uczestnik.KodPocztowy, new { @class = "form-control" })
            @Html.ValidationMessageFor(x => x.Uczestnik.KodPocztowy, null, new { @class = "text-danger" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.Miejscowosc)
            @Html.TextBoxFor(x => x.Uczestnik.Miejscowosc, new { @class = "form-control" })
        </div>

        <div class="form-group">
            @Html.LabelFor(x => x.Uczestnik.Kontakt)
            @for (int index = 0; index < Model.Kontakty.Count; index++)
                {
                <div class="form-control">
                    @Html.HiddenFor(x => x.Kontakty[index].Id)
                    @Html.CheckBoxFor(x => x.Kontakty[index].IsChecked)
                    @Html.DisplayFor(x => x.Kontakty[index].Name)
                </div>
                }
        </div>

        <div class="panel-footer">
            <button type="submit" class="btn btn-success center-block">Wyślij ankietę</button>
        </div>
    </div>
</div>

还有我的 ModelForCheckBoxList

public class ModelForCheckBoxList
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}

正如我之前所说的,当我在表单中检查并单击提交时,Kontakty.IsChecked 没有改变

【问题讨论】:

  • “完成”,请最小示例。

标签: c# .net razor


【解决方案1】:
@{       
        string strChecked = "checked";

        foreach (var item in Model.Kontakty)
        {
            <input type="checkbox" name="SUMBIT NAME" value="@item.Id" @if (item.IsChecked) { @strChecked } />
            <a>@item.Name</a>
        }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2019-09-27
    • 1970-01-01
    • 2018-04-14
    • 2023-04-02
    相关资源
    最近更新 更多