ASP.Net 5 MVC6 选择 taghelper 产生错误的输出

Posted

技术标签:

【中文标题】ASP.Net 5 MVC6 选择 taghelper 产生错误的输出【英文标题】:ASP.Net 5 MVC6 select taghelper produces wrong output 【发布时间】:2016-04-07 18:15:36 【问题描述】:

我修改了 asp.net mvc 6 的默认登录,并想添加一个带有 taghelper select 的下拉列表,但它似乎产生了错误的输出。

我添加了 select-taghelper-element,所以它看起来像这样:

<form asp-controller="Account" asp-action="Register" method="post" class="form-horizontal" role="form">
    <div class="form-group">
        <label asp-for="Tenant" class="col-md-2 control-label"></label>
        <div class="col-md-10">
            <select asp-for="Tenant" asp-items="ViewBag.Tenants" class="form-control" />
            <span asp-validation-for="Tenant" class="text-danger"></span>
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <button type="submit" class="btn btn-default">Register</button>
        </div>
    </div>
</form>

添加选择标签后,提交按钮不再显示 - 下拉列表显示但不包含数据,但使用断点 Viewbag.Tenants 包含数据。 当我使用 select-tag 删除第一个 div 时,显示按钮。

知道这里有什么问题吗?

【问题讨论】:

你试过在 ViewBag 之前加上 @ 吗? @JoeAudette 谢谢,试过了,没区别.. 【参考方案1】:

你的标记是错误的。不要使用自闭合select 标签。有一个明确的结束标记。

这应该可行。

<select asp-for="Tenant" asp-items="ViewBag.Tenants" class="form-control"></select>

【讨论】:

啊,你真是个天才!谢谢! :) 我已经尝试过了,但奇怪的是我得到了以 multiple="multiple" 作为选择列表而不是下拉列表呈现的列表? @MarkRedman 取决于你为asp-for使用的属性的类型,如果是数组类型(int[]/string[]),会用多个属性渲染 它是 SelectList 类型,我尝试过 SelectList 和 List (不是 IEnumerable 或数组) 我说的是用于asp-for 而不是asp-items 的属性。见Select Tag Helper in MVC 6

以上是关于ASP.Net 5 MVC6 选择 taghelper 产生错误的输出的主要内容,如果未能解决你的问题,请参考以下文章

MVC 6 - TagHelper 选择

[十一] ASP.NET Core 中的 Taghelper

解读ASP.NET 5 & MVC6系列

解读ASP.NET 5 & MVC6系列:ASP.NET 5简介

Asp.net 5 (MVC6) Areas 分区

解读ASP.NET 5 & MVC6系列:依赖注入