如何在ASP.NET Core 2.0 Razor页面中填充下拉列表

5
我想从我的数据库中填充下拉列表。在Razor页面中,使用模型绑定的方法是什么?
public IActionResult OnGet()
    {
        var model = new Item
        {
            ItemTypes = _context.ItemTypes.ToList(),
            Parts = _context.Parts.ToList(),
            Sections = _context.Sections.ToList()
        };

        return Page();
    }
1个回答

6
现在您可能已经解决了问题,但如果能帮助未来的访问者:请在您的PageModel类中创建一个或多个属性,用于接收您的“列表”:
public class CreateModel : PageModel
{
    ...
    public SelectList CountryList { get; set; }
    ...
}

在同一个类中,创建一个方法来填充您的列表并设置您的属性:

private void PopulateCountries()
{
    var countries = from c in _context.Countries
                               orderby d.Name
                               select c;
    CountryList = new SelectList(countries, "Alpha3", "CountryName");
}

然后,在您的页面中:
<div class="form-group">
    <label asp-for="Race.CountryCode" class="control-label"></label>
    <select asp-for="Race.CountryCode" class="form-control"
            asp-items="@Model.CountryList">
        <option value="">-- Select --</option>
    </select>
</div>

当然,您可以进行一些小变化。例如,将 PopulateCountries 放入基类、服务等中,但我想您已经明白了这个思路。
参考: ASP.NET Core 中的 Razor Pages with EF Core - Update Related Data - 8/8

PopulateCountries() 是如何被调用的? - Mike
@Mike,我已经不记得细节了,但我猜你可以在PageLoad或其他页面事件中添加PopulateCountries()。 - luizs81

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接