【发布时间】:2017-06-26 14:21:53
【问题描述】:
我需要一些关于使用 Tag Helper 的 ENUM 下拉菜单的帮助。
我发现了很多将模型绑定到 Selectlist 和一些使用 ENUM 的示例,但所有这些示例都与 CREATE 操作有关,并且我面临着 EDIT 操作的问题。
我的模型
public class ProspectLog
{
public int Id { get; set; }
public int IdProspect { get; set; }
public int IdEmpresa { get; set; }
public DateTime Criado { get; set; }
public string Usuario { get; set; }
public string Descricao { get; set; }
public ETipoLog TipoLog { get; set; }
public enum ETipoLog
{
[Display(Name = "CADASTRO")]
Cadastro = 0,
[Display(Name = "CONTATO")]
Contato = 1,
[Display(Name = @"TROCA ETAPA")]
Troca = 2,
[Display(Name = @"QUALIFICAÇÃO")]
Qualifica = 3,
[Display(Name = @"EDIÇÃO")]
Edicao = 4
}
}
在我基于 MVC5 的旧项目中,我只是在我的视图上使用了它,这就足够了。
下拉
<div class="form-group col-sm-6">
<label style="font-weight: bolder" for="txtSituacao">Situação</label>
@Html.EnumDropDownListFor(model => model.Situacao, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Situacao, "", new { @class = "text-danger" })
</div>
我尝试了不同的方法,但我无法在编辑操作上使用数据库项目选择来设置下拉菜单。我试过这样:
<div class="form-group">
<label asp-for="TipoLog" class="col-md-2 control-label"></label>
<div class="col-md-10">
<select asp-for="TipoLog" class="form-control"></select>
<span asp-validation-for="TipoLog" class="text-danger"></span>
</div>
</div>
我也试过这样:
<div class="form-group">
<label asp-for="TipoLog" class="col-md-2 control-label"></label>
<div class="col-md-10">
<select asp-for="TipoLog" asp-items="Html.GetEnumSelectList<TipoLog>()"></select>
<span asp-validation-for="TipoLog" class="text-danger"></span>
</div>
</div>
我还尝试通过这种方式将模型列表绑定到控制器上的 ViewBag:
控制器:
ViewBag.Log = new SelectList(lista, "Id", "Nome");
查看:
<div class="form-group col-sm-2">
<label asp-for="TipoLogo" class="col-md-2 control-label"></label>
<select asp-for="TipoLogo" asp-items="ViewBag.Log" class="form-control"></select>
<span asp-validation-for="TipoLogo" class="text-danger"></span>
</div>
它部分工作,下拉列表列出了项目,但没有从数据库中选择正确的项目。它显示列表中的第一个为选中状态。
【问题讨论】:
-
我也找到了这个教程:jerriepelser.com/blog/using-enum-aspnet-5-select-taghelper,但正如我上面提到的,它让我遇到了一个异常,我无法解决问题。
标签: asp.net-mvc asp.net-core enums asp.net-core-tag-helpers