你的类型是enum 类型吗?
如果不是枚举,而是像下面这样的普通类型:
public class Genre
{
public int Id { get; set; }
public string Name { get; set; }
}
那么如果你只是想从表单中绑定一个复杂类型的属性,你只需要直接绑定即可。
例子:
<form method="post">
<input asp-for="Book.Genre.Id" />
<input asp-for="Book.Genre.Name" />
<input type="submit" value="submit" />
</form>
如果你想使用下拉列表。你可以像下面这样更改你的代码。
页面模型:
public class LoginModel : PageModel
{
[BindProperty]
public Book Book { get; set; }
public List<SelectListItem> Genres { get; set; }
public void OnGet()
{
Genres = new List<SelectListItem>
{
new SelectListItem { Value = "AA", Text = "AA" },
new SelectListItem { Value = "BB", Text = "BB" },
new SelectListItem { Value = "CC", Text = "CC" },
};
}
public IActionResult OnPost()
{
return Page();
}
}
页面:
<form method="post">
<input asp-for="Book.Genre.Id" />
<select asp-items="Model.Genres" asp-for="Book.Genre.Name" class="custom-select">
</select>
<input type="submit" value="submit" />
</form>
如果您的类型是枚举类型,例如:
public enum Genre
{
Mexico,
USA,
Canada,
France,
Germany,
Spain
}
您可以将页面代码更改为:
<form method="post">
<select asp-for="Book.Genre"
asp-items="Html.GetEnumSelectList<Models.Genre>()">
</select>
<input type="submit" value="submit" />
</form>
绑定Book。
您可以在Official document查看详细信息