MVC 6 - TagHelper选择

Yud*_*elo 2 asp.net asp.net-mvc asp.net-core-mvc

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

这就是我认为的

<select asp-for="Estimators" asp-items="Model.Estimators" class="form-control"></select>
Run Code Online (Sandbox Code Playgroud)

这是页面上的输出

<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>
Run Code Online (Sandbox Code Playgroud)

为什么select标签呈现为multiple ="multiple".

Shy*_*yju 7

你实际上使用的是错误的帮助.您应该有另一个属性来存储所选项目.

public class YourViewModel
{
   public int SelectedEstimator { set; get; }
   public List<SelectListItem> Estimators { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

在你看来

@model YourViewModel
<select asp-for="SelectedEstimator" asp-items="@Model.Estimators">
    <option>Please select one</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这将呈现单个可选SELECT元素.

当您用于asp-for项目的属性是数组类型时,生成的select元素将是多选的.

public class YourViewModel
{
   public int[] SelectedEstimator { set; get; }
   public List<SelectListItem> Estimators { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

  • @YudielCurbelo您可能忘记将@Shyju的回复标记为"答案".您可能希望这样做是为了其他用户的利益. (2认同)