I scaffold the Identity Register.cshtml page. This page is using razor. Here is part of the form..
<form id="registerForm" asp-route-returnUrl="@Model.ReturnUrl" method="post">
<h2>Create a new account.</h2>
<hr />
<div asp-validation-summary="ModelOnly" ></div>
<div >
<input asp-for="Input.FullName" aria-required="true" />
<label asp-for="Input.FullName"></label>
<span asp-validation-for="Input.FullName" ></span>
</div>
<br />
<div >
<input asp-for="Input.Bank" aria-required="true" />
<label asp-for="Input.Bank"></label>
<span asp-validation-for="Input.Bank" ></span>
</div>
<br />
<button id="registerSubmit" type="submit" >Register</button>
//.......
</form>
I tried to populate a dropdownlist for item Input.Bank . I figure I should do a ViewBag in OnGetAsync
public async Task OnGetAsync(string returnUrl = null)
{
ReturnUrl = returnUrl;
ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
}
But it wont allow to. How can I populate the dropdownlist? The value of the dropdownlist will come from a database table.
CodePudding user response:
You can try to create a property into the 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(bind DropDown data to Input.Bank
):
<div >
<select asp-for="Input.Bank" aria-required="true" asp-items="@Model.DropDown"></select>
<label asp-for="Input.Bank"></label>
<span asp-validation-for="Input.Bank" ></span>
</div>