使用Select TagHelper设置默认/空值

45
在 ASP.NET MVC 中,您可以使用:
@Html.DropDownListFor(model => model.Category, ViewBag.Category as IEnumerable<SelectListItem>, "-- SELECT --", new { @class = "form-control" })
使用asp.net 5,如何在标签助手中包含默认或空值 (-- SELECT --)
<select asp-for="Category" asp-items="@ViewBag.Category"  class="form-control"></select>
4个回答

98

您只需在选择器中插入一个选项即可:

<select asp-for="Category" asp-items="@ViewBag.Category"  class="form-control">
    <option disabled selected>--- SELECT ---</option>
</select>

上面代码中的disabled关键字表示"--- SELECT ---"行在列表中已被选择后不能再次选择。如果你希望用户能够再次清空选择(例如,如果它绑定了一个可空字段),那么只需省略disabled即可。


9
我需要将选项的值设置为空字符串,以允许用户将基础可空整型字段置空:<option value="">无</option> - DeveloperDan
2
如果您不想在下拉列表中显示禁用选项,可以将其样式设置为 display none。 - Shahab
1
对于可空列,default选项的值应该是"",否则模型将无法绑定。 - Shadi Alnamrouti

8
如果你想向数据库存储 null 值,那么请使用以下代码:<option selected value="">Full Access</option>

如果我需要它为空怎么办?如果选择默认选项,我希望它是null而不是空字符串。 - undefined
这是答案的下半部分(如果您需要支持可空导航属性,而不仅仅在选择中有一个标题指示“请选择一个值”)。 - undefined

2
如果您在模型中使用 asp-items,则它将使用值0作为所选项目。如果您有一个没有值的默认字符串标签 <option>,则必须使用循环来处理 <option> 并将默认选项放在循环外面。这是一个使用 asp-items 的 .Net Core 示例:
<select asp-for="DepartmentUnit" asp-items="@Model.DepartmentUnits" class="form-control"></select>

现在这是使用循环的另一个例子:

<select>
<option val="">--Select--</option>
foreach(item in Model.DepartmentUnits)
{<option val="@item.val">@item.title</option>}
</select>

0

这是Matt的回答:

    <select asp-for="Category" asp-items="@ViewBag.Category"  class="form-control">
        <option disabled selected>--- SELECT ---</option>
    </select>

验证也可以使用。可能是由于选项被禁用,因此似乎不是有效的选择。

顺便说一句:这也适用于MVC Core 3 ;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接