Шаблон редактора ядра asp.net: Имя свойства null - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть несколько шаблонов редактора, в которых появляется один и тот же код для рендеринга 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.

Мои вопросы:

  1. Почему имя свойства не достигает этого шаблона?
  2. Это неправильный подход?Если да, то любая подсказка приветствуется.
...