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

sae*_*med 5 c# asp.net asp.net-core-2.0

我想从我的数据库中填充下拉列表。 剃刀页面中模型绑定的方式是什么

public IActionResult OnGet()
    {
        var model = new Item
        {
            ItemTypes = _context.ItemTypes.ToList(),
            Parts = _context.Parts.ToList(),
            Sections = _context.Sections.ToList()
        };

        return Page();
    }
Run Code Online (Sandbox Code Playgroud)

lui*_*s81 6

在这一点上,您可能已经解决了,但如果它可以帮助未来的访问者:

在您的PageModel班级中,创建一个或多个将接收您的“列表”的属性:

public class CreateModel : PageModel
{
    ...
    public SelectList CountryList { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

然后,在您的页面中:

<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>
Run Code Online (Sandbox Code Playgroud)

当然,您可以做一些小的变化。例如,将 放在PopulateCountries基类、服务等中,但我认为您明白了。

参考:Razor Pages with EF Core in ASP.NET Core - 更新相关数据 - 7 of 8