我需要一些使用Tag Helper的ENUM下拉菜单的帮助。
我发现很多例子将模型绑定到Selectlist,有些使用ENUM,但是所有这些,关于CREATE操作,以及Im面临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的旧项目中,我只是在我的View上使用它,这就足够了。
落下
<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>
它部分工作,下拉列出了项目,但没有从数据库中选择正确的项目。它显示列表中的第一个选中。
您忘记使用“@”转义HTML中的C#代码
尝试:
<select asp-for="TipoLog" asp-items="Html.GetEnumSelectList<TipoLog>()"></select>
更新为在Html.Get之前删除@ ....
试试<select asp-for="TipoLog" asp-items="Html.GetEnumSelectList<ETipoLog>()"></select>
这对我有用,无需使用声明。
<select asp-for="ClientFeeStage"
asp-items="@Html.GetEnumSelectList(typeof(AT.Domain.Entities.ClientFeeStage))"
class="form-control">