我有一个Book
类:
public class Book
{
public Genre Genre { get; set; }
}
我有cshtml
输入
<select asp-items="Model.Genres" asp-for="Book.Genre" class="custom-select">
</select>
但在POSTing
之后,我在Author
和Book
属性中得到了null。我该如何绑定?
您的流派是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>
以结合CCD_ 7。
您可以在官方文档中查看详细信息