我正在ASP.NET Razor页面上编写应用程序(这是我的本职工作)。这个应用的主题是“库”,我有添加,删除,修改等。我想做的是。当我添加一本新书时,当它是一本书的类型时,我想使用数据库中的下拉列表。我一直在寻找这个,但我没有为自己找到可行的解决办法。
所以我的书类是: Book.cs
public class Book
{
[Key]
public int Id { get; set; }
[Required]
[Display(Name = "Tytuł")]
public string Title { get; set; }
[Required]
[Display(Name = "Autor")]
public string Author { get; set; }
[Required]
[Display(Name = "Gatunek")]
public string Genre { get; set; }
[Required]
[Display(Name = "Rok Wydania")]
public int ReleaseYear { get; set; }
[Required]
[Display(Name = "Okładka")]
public string Cover { get; set; }
[Required]
[Display(Name = "Liczba Stron")]
public int NumberOfPages { get; set; }
[Required]
[Display(Name = "Opis")]
public string Description { get; set; }
}接下来我要上体裁课
Genre.cs
[Key]
public int Id { get; set; }
[Required]
[Display(Name = "Gatunek")]
public string Name { get; set; }我要把这个添加到我的ApplicationDbContext中
ApplicationDbContext.cs
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Book> Book { get; set; }
public DbSet<Genre> Genre { get; set; }AddBook.cshtml.cs
[Authorize(Roles = SD.AdminEndUser)]
public class AddBookModel : PageModel
{
private readonly ApplicationDbContext _db;
[BindProperty]
public Book Book { get; set; }
public AddBookModel(ApplicationDbContext db)
{
_db = db;
}
public IActionResult OnGet()
{
return Page();
}
public async Task <IActionResult> OnPostAsync(ServiceType ServiceType)
{
if(!ModelState.IsValid)
{
return Page();
}
_db.Book.Add(Book);
await _db.SaveChangesAsync();
return RedirectToPage("Index");
}和AddBook.cs
<form method="post">
<div class="border backgroundWhite">
<div class="form-group row">
<div class="col-2">
<label asp-for="Book.Title"></label>
</div>
<div class="col-5">
<input asp-for="Book.Title" class="form-control" />
</div>
<span asp-validation-for="Book.Title" class="text-danger"></span>
</div>
<div class="form-group row">
<div class="col-2">
<label asp-for="Book.Author"></label>
</div>
<div class="col-5">
<input asp-for="Book.Author" class="form-control" />
</div>
<span asp-validation-for="Book.Author" class="text-danger"></span>
</div>
<div class="form-group row">
<div class="col-2">
<label asp-for="Book.Genre"></label>
</div>
<div class="col-5">
<input asp-for="Book.Genre" class="form-control" />
</div>
<span asp-validation-for="Book.Genre" class="text-danger"></span>
</div>
<div class="form-group row">
<div class="col-2">
<label asp-for="Book.ReleaseYear"></label>
</div>
<div class="col-5">
<input asp-for="Book.ReleaseYear" class="form-control" />
</div>
<span asp-validation-for="Book.ReleaseYear" class="text-danger"></span>
</div>
<div class="form-group row">
<div class="col-2">
<label asp-for="Book.NumberOfPages"></label>
</div>
<div class="col-5">
<input asp-for="Book.NumberOfPages" class="form-control" />
</div>
<span asp-validation-for="Book.NumberOfPages" class="text-danger"></span>
</div>
<div class="form-group row">
<div class="col-2">
<label asp-for="Book.Cover"></label>
</div>
<div class="col-5">
<input asp-for="Book.Cover" class="form-control" />
</div>
<span asp-validation-for="Book.Cover" class="text-danger"></span>
</div>
<div class="form-group row">
<div class="col-2">
<label asp-for="Book.Description"></label>
</div>
<div class="col-5">
<input asp-for="Book.Description" class="form-control" />
</div>
<span asp-validation-for="Book.Description" class="text-danger"></span>
</div>
<div class="form-group row">
<div class="col-5 offset-2">
<partial name="_AddAndBackToListButton" />
</div>
</div>
</div>
我和Db有工作关系。我只是不知道接下来我该怎么做才能进入下课名单。我对控制器的解决方案不感兴趣!
有什么想法吗?
谢谢你的帮助!
发布于 2019-05-27 19:09:47
这可能重复以下几点:
但无论如何,我会试着回答:
HtmlDropdownFor,并且当该参数对您的List<Genre>执行LINQ查询时(类型列表或类型字典,无论您可能需要哪种类型)<select></select>的表单中手动编写一个HTML输入即可。显然,这更费时,但是您可以在w3学校: HTML元素,特别是关于<select>的部分中找到更多关于如何做到这一点的信息。https://stackoverflow.com/questions/56330775
复制相似问题