C# ASP.NET从表单绑定复杂类型属性
我有一本C# ASP.NET从表单绑定复杂类型属性,c#,.net,asp.net-core,data-binding,razor-pages,C#,.net,Asp.net Core,Data Binding,Razor Pages,我有一本书课: public class Book { public Genre Genre { get; set; } } 我有cshtml输入 <select asp-items="Model.Genres" asp-for="Book.Genre" class="custom-select"> </select> 但是在post这个请求之后,我在Author和Book属性中得到空值。我如何绑
书
课:
public class Book
{
public Genre Genre { get; set; }
}
我有cshtml
输入
<select asp-items="Model.Genres" asp-for="Book.Genre" class="custom-select">
</select>
但是在
post
这个请求之后,我在Author
和Book
属性中得到空值。我如何绑定它?您的类型是枚举类型吗?
如果它不是枚举,而是以下常见类型:
然后,如果您只想从表单绑定一个复杂类型属性,您只需要直接绑定
例如:
<form method="post">
<input asp-for="Book.Genre.Id" />
<input asp-for="Book.Genre.Name" />
<input type="submit" value="submit" />
</form>
您可以将页面代码更改为:
<form method="post">
<select asp-for="Book.Genre"
asp-items="Html.GetEnumSelectList<Models.Genre>()">
</select>
<input type="submit" value="submit" />
</form>
要绑定书籍
您可以在中查看详细信息。我想在select中显示已创建的作者和流派,我得到了它。现在,我想将此FK绑定到新创建的book对象,并且不复制作者和流派。使用
asp for=“您要绑定的属性”
,然后它将绑定dropdownlist的值。如果您有其他要求,请单击“Hi@salvatore”,请提供您的课程和详细信息。我有书籍
课程,包含流派
对象<代码>发布新书需要从选择
元素中选择现有类型。发布后,应将书籍添加到数据库中,属性类型为外键。检查文档以了解模型绑定
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>