Использование ASP.NET Core 2.2 Я пытаюсь создать Tag Helper , который будет привязан к ModelExpression
, представляющему коллекцию SelectListItems
, Затем я хочу получить доступ к итерациям по SelectListItems
, содержащемуся в списке.
В коде это выглядит примерно так ...
[HtmlTargetElement("check-box-list", Attributes = "asp-for)]
public class CheckboxListTagHelper : TagHelper
{
// Where the model is an IEnumerable<SelectItemList>
[HtmlAttributeName("asp-for")]
public ModelExpression AspFor { get; set; }
public override async Task ProcessAsync(
TagHelperContext context, TagHelperOutput output)
{
// I want to be able to reference the IEnumerable<SelectListItem>
// represented by the model
var modelItems = AspFor.Model as IEnumerable<SelectListItem>; // WRONG!
...
}
}
Полагаю, мне нужно использовать свойства ModelExpression.MetaData
или ModelExpression.ModelExpolorer
, но я не могу найти информацию, которая указывает мне правильное направление.
Неуравновешенное исправление - предоставить ту же модель в качестве дополнительного свойства:
[HtmlAttributeName("select-item-list")]
public IEnumerable<SelectListItem> SelectItemList { get; set; }
Но это выглядит грязно в представлении:
<check-box-list
asp-for="SelectedAuthorityLevels"
checkbox-list="Model.SelectedAuthorityLevels" />
, поскольку вы дважды привязываете к одному и тому же свойству модели.
Любое руководство будет высоко ценится.