public enum PageType
{
[Display(Name = "Brak")]
None = 0,
[Display(Name = "Strona")]
Page = 1,
[Display(Name = "Sklep")]
Shop = 2,
[Display(Name = "Error")]
Error = 3
}
视图模型-ValueTypeEditViewModel
包含ValueTypeModel
,其中Conroller
(string
)
我正在使用下拉菜单
<div class="form-group">
<label asp-for="ValueType.Controller" class="m-1"></label>
<div><span asp-validation-for="ValueType.Controller" class="text-danger"></span></div>
<select class="custom-select" asp-for="ValueType.Controller" asp-items="Html.GetEnumSelectList<ValueTypeModel.PageType>()"></select>
</div>
这会完美生成一个下拉列表,但是当我编辑页面时,先前选择的Value Type.Controller
不会被选中。在保存值之前,我必须对值进行一些逻辑运算,其中wchich是一个数字(字符串),用于将其转换为名称并保存单词。就像我选择[Display(Name = "Strona")] Page = 1,
那样工作,然后Value Type.Controller
是字符串1
,我必须查找名称并将其保存到数据库Page
问题如何使用先前选择的值呈现下拉列表
答案 0 :(得分:0)
这不是真正的完整答案-只是讨厌的问题问题
<div class="form-group">
<label asp-for="ValueType.Controller" class="m-1"></label>
<div><span asp-validation-for="ValueType.Controller" class="text-danger"></span></div>
<select class="custom-select" asp-for="ValueType.Controller">
@foreach (var e in Enum.GetValues(typeof(ValueTypeModel.PageType)).Cast<int>())
{
if (Enum.GetName(typeof(ValueTypeModel.PageType), e) == Model.ValueType.Controller)
{
<option value="@e.ToString()" selected>@Enum.GetName(typeof(ValueTypeModel.PageType), e)</option>
}
else
{
<option value="@e.ToString()">@Enum.GetName(typeof(ValueTypeModel.PageType), e)</option>
}
}
</select>
</div>