在ASP.Net MVC中的select元素上提交表单

时间:2018-04-22 13:40:17

标签: c# asp.net-mvc

因此,在我的文件中,我有一个提交表单并启动控制器操作的工作示例。在这种形式中,有一个功能正常的select元素,它按预期工作,控制器能够检索select元素中的值。

@using (Html.BeginForm("InsertEntry", "Modeliai"))
{
    <div class="row">
        <div class="col-7">
            <input type="text" class="form-control" placeholder="Pavadinimas" name="Pavadinimas">
        </div>
        <div class="col-3">
            <select class="selectpicker" data-live-search="true" name="fk_MARKEid">
                @foreach (var item in Model.Markes)
                {
                    <option data-tokens="@item.pavadinimas" data-content="@item.pavadinimas">@item.id</option>
                }
            </select>
        </div>
        <button type="submit" class="btn btn-success">Add</button>
    </div>
}

但是当我尝试在表格行中添加select元素时,控制器以某种方式不会捕获select元素的值。

@using (Html.BeginForm("UpdateEntry", "Modeliai"))
{
    <td>
         <input type="hidden" name="id" value="@item.id" />
         <input type="text" name="pavadinimas" class="form-control" value="@item.pavadinimas" />
    </td>
    <td>
        <select class="selectpicker" data-live-search="true" name="fk_MARKEid">
            @{
                var ignore = Model.Markes.FirstOrDefault(x => x.id == item.fk_MARKEid);
            }

            @foreach (var x in Model.Markes)
            {
                if (ignore?.id == x.id)
                {
                    <option data-tokens="@ignore?.pavadinimas" data-content="@ignore?.pavadinimas" selected="selected">@ignore?.id</option>
                }

                <option data-tokens="@x.pavadinimas" data-content="@x.pavadinimas">@x.id</option>
            }

            </select>
    </td>
    <td style="width: 100px">
        <button class="close" type="submit">
            <i class="fas fa-pencil-alt" style="font-size: smaller"></i>
        </button>
    </td>
}

是的,我尝试检查选择的元素名称和型号名称是否匹配。

有关使第二种形式发挥作用或解释为何会发生这种情况的任何帮助都将受到赞赏

1 个答案:

答案 0 :(得分:0)

在ASP.Net MVC中使用select的更好方法是在SelectList中使用@ Html.DropDownListFor。

示例:查看

   @Html.DropDownListFor(x => x.YourModel, new SelectList(ViewBag.customValue, "Text", "Value"), new { htmlAttributes = new { @class = "form-control" } })

示例:控制器

        List<SelectListItem> listForSelect = new List<SelectListItem>();

        listForSelect.Add(new SelectListItem { Text = "Your text", Value = "Your value" });

        ViewBag.customValue = listForSelect;