Rog*_*edo 3 asp.net-mvc enums asp.net-core asp.net-core-tag-helpers
我需要使用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
}
}
Run Code Online (Sandbox Code Playgroud)
在基于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>
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的方式,并且对在编辑操作中选择的数据库项设置了下拉菜单。我这样尝试:
<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>
Run Code Online (Sandbox Code Playgroud)
我也这样尝试过:
<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>
Run Code Online (Sandbox Code Playgroud)
我还尝试通过以下方式将模型列表绑定到控制器上的ViewBag:
控制器:
ViewBag.Log = new SelectList(lista, "Id", "Nome");
Run Code Online (Sandbox Code Playgroud)
视图:
<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>
Run Code Online (Sandbox Code Playgroud)
它的部分工作,下拉列表中列出了项目,但没有从数据库中选择正确的项目。它在列表中显示所选的第一个。
终于我找到了解决方案!
这似乎并不明显,但是那样我就没有编译错误。我从Ivan那里得到的答案是不正确的,但是有必要CRM.Model像这样导入视图中的:
@using CRM.Model;
Run Code Online (Sandbox Code Playgroud)
因此,我的下拉列表:
<select asp-for="TipoLog" asp-items="Html.GetEnumSelectList<ETipoLog>()" class="form-control"></select>
Run Code Online (Sandbox Code Playgroud)
您可以看到,Visual Studio告诉我它不是必需的,用灰色绘制它,但是如果不这样做,我会得到编译错误。我希望我能帮助别人。
您忘记了使用“ @”在HTML中转义C#代码。
尝试:
<select asp-for="TipoLog" asp-items="Html.GetEnumSelectList<TipoLog>()"></select>
Run Code Online (Sandbox Code Playgroud)
更新为在Html.Get之前删除@。
| 归档时间: |
|
| 查看次数: |
7965 次 |
| 最近记录: |