如何在 Register.cshtml 中添加下拉列表

How to add Dropdownlist in Register.cshtml

我搭建了身份 Register.cshtml 页面。此页面正在使用剃须刀。这是表格的一部分..

<form id="registerForm" asp-route-returnUrl="@Model.ReturnUrl" method="post">
        <h2>Create a new account.</h2>
        <hr />
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>

         <div class="form-floating">
            <input asp-for="Input.FullName" class="form-control" aria-required="true" />
            <label asp-for="Input.FullName"></label>
            <span asp-validation-for="Input.FullName" class="text-danger"></span>
        </div>
        <br />
        <div class="form-floating">
            <input asp-for="Input.Bank" class="form-control" aria-required="true" />
            <label asp-for="Input.Bank"></label>
            <span asp-validation-for="Input.Bank" class="text-danger"></span>
        </div>
        <br />
        <button id="registerSubmit" type="submit" class="w-100 
        btn btn-lg btn-primary">Register</button>
        //.......
</form>

我试图填充项目 Input.Bank 的下拉列表。我想我应该在 OnGetAsync

中做一个 ViewBag
public async Task OnGetAsync(string returnUrl = null)
    {
        ReturnUrl = returnUrl;
        ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
    }

但它不允许。如何填充下拉列表?下拉列表的值将来自数据库 table.

您可以尝试在 PageModel 中创建一个 属性:

[BindProperty]
        public List<SelectListItem> DropDown { get; set; }
public async Task OnGetAsync(string returnUrl = null)
    {   
        //set DropDown with database here
        DropDown = xxxxxx;
        ReturnUrl = returnUrl;
        ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
    }

View(绑定DropDown数据到Input.Bank):

<div class="form-floating">
        <select asp-for="Input.Bank"class="form-control" aria-required="true" asp-items="@Model.DropDown"></select>
        <label asp-for="Input.Bank"></label>
        <span asp-validation-for="Input.Bank" class="text-danger"></span>
    </div>