У меня есть несколько шаблонов редактора, в которых появляется один и тот же код для рендеринга Enum, как в этом примере:
@model OriginDto
@* This div is what I want to move to a specific editor template *@
<div class="form-group">
<label asp-for="Kind" class="control-label"></label>
<select asp-for="Kind" asp-items="Html.GetEnumSelectList<Origin.KindOfOrigin>()" class="form-control"> </select>
<span asp-validation-for="Kind" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Source" class="control-label"></label>
<input asp-for="Source" class="form-control" />
<span asp-validation-for="Source" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="EntryDate"></label>
<input asp-for="EntryDate" class="form-control" type="date" />
<span asp-validation-for="EntryDate" class="text-danger"></span>
</div>
Поэтому я решил создать следующий редактор шаблонов для Enum:
@model Enum
<div class="form-group">
<label asp-for="@Model" class="control-label"></label>
<select asp-for="@Model" asp-items="Html.GetEnumSelectList(Model.GetType())" class="form-control"></select>
<span asp-validation-for="@Model" class="text-danger"></span>
</div>
И замените предыдущий div на:
@Html.EditorFor(x => x.Kind)
Но когда он отображает HTML, есть некоторые различия.Например, метка пуста:
<label class="control-label" for="Cpu_Origin_Kind"></label>
Но в исходном шаблоне оно имело имя свойства:
<label class="control-label" for="Cpu_Origin_Kind">Kind</label>
Похоже, имя свойства не достигает шаблона.Фактически, при проверке «this.ViewData.ModelMetadata.PropertyName» во время отладки шаблона он имеет значение null.
Мои вопросы:
- Почему имя свойства не достигает этого шаблона?
- Это неправильный подход?Если да, то любая подсказка приветствуется.