MVC 6 - TagHelper 选择

Posted

技术标签:

【中文标题】MVC 6 - TagHelper 选择【英文标题】:MVC 6 - TagHelper Select 【发布时间】:2016-01-31 04:07:15 【问题描述】:

这可能是一个愚蠢的问题,但我不知道为什么这是 Select TagHelper 的默认行为。

这就是我的看法

<select asp-for="Estimators" asp-items="Model.Estimators" class="form-control"></select>

这是页面上的输出

<select class="form-control" id="Estimators" multiple="multiple" name="Estimators"><option value="2">Enio LastName</option>
<option value="6">Ianko Diaz</option>
<option value="7">Iordan Diaz</option>
<option value="8">Joan Alonso</option>
<option value="5">Lazaro Araya</option>
<option value="3">Leydis Martinez</option>
<option value="4">Ruben Cruz</option>
<option value="1">Shamir Ajate</option>
<option value="9">Yudiel Curbelo</option>
</select>

为什么选择标签呈现为multiple="multiple"。

【问题讨论】:

【参考方案1】:

您实际上是错误地使用了帮助程序。您应该有另一个属性来存储所选项目。

public class YourViewModel

   public int SelectedEstimator  set; get; 
   public List<SelectListItem> Estimators  set; get; 

在你看来

@model YourViewModel
<select asp-for="SelectedEstimator" asp-items="@Model.Estimators">
    <option>Please select one</option>
</select>

这将呈现单个可选择的 SELECT 元素。

当您用于asp-for items 的属性是数组类型时,生成的选择元素将是多选。

public class YourViewModel

   public int[] SelectedEstimator  set; get; 
   public List<SelectListItem> Estimators  set; get; 

【讨论】:

这是我的财产。公共 IEnumerable Estimators get;放; @YudielCurbelo 您以错误的方式使用帮助程序。请参阅我的答案,其中解释了如何使用它。另请参阅this 答案以获取更详细的示例。 @YudielCurbelo 您可能忘记将来自@Shyju 的回复标记为Answer。为了其他用户的利益,您可能希望这样做。

以上是关于MVC 6 - TagHelper 选择的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 5 MVC 6 中的单选按钮标记帮助程序

.net core 下的TagHelper自定义新手提醒

.net core 下的TagHelper自定义新手提醒

@Html.DisplayFor 的 MVC6 替代品

在 ASP.NET Core MVC 中选择 ENUM Tag Helper

asp.net core mvc 是否未包含使用UA 动态选择displayModel