选择标签助手的困惑

时间:2018-09-17 15:33:39

标签: c# drop-down-menu asp.net-core-tag-helpers

如果我有这个

public class EventListViewModel
{
    public string Id { get; set; }
    public string Description { get; set; }
}

并在控制器中

public IActionResult Index()
{
List<EventListViewModel> eventList = this.eventStructureBLL.EventListGetBy("it");
return View(eventList);
}

并在“查看此”中

@model List<Common.DAL.ViewModels.EventListViewModel>

什么是正确的“选择标签助手”

<select asp-for="??" asp-items="???"></select>

1 个答案:

答案 0 :(得分:0)

选择某些内容并将其发布回去需要一些绑定内容。由于它将是单个项目,因此您将需要以下内容:

public class FooViewModel
{
    public int SelectedEventId { get; set; }
}

那么,该属性就是您要绑定的对象:

<select asp-for="SelectedEventId" ...></select>

然后,您还需要传递选项列表,该列表应为IEnumerable<SelectListItem>。由于您已经有了视图模型,因此对于要绑定的属性,也要在其中添加它作为属性:

public class FooViewModel
{
    public int SelectedEventId { get; set; }
    public IEnumerable<SelectListItem> EventOptions { get; set; }
}

要在您的操作中填写此内容:

model.EventOptions = this.eventStructureBLL.EventListGetBy("it").Select(x => new SelectListItem
{
    Value = x.Id.ToString(),
    Text = x.Description
});

然后,当然,此模型将成为您传递给视图的模型:

return View(model);

然后,在视图中:

@model FooViewModel

最后,您的选择标签为:

<select asp-for="SelectedEventId" asp-items="@Model.EventOptions"></select>