数据库窗体中的asp.NET Razor Pages下拉列表

时间:2019-05-29 06:44:36

标签: c# asp.net database list razor-pages

我正在从db写图书馆应用程序(添加,删除)书籍。 我正在使用Razor Pages .NET CORE 2.2 我将dropdownlist添加到我的项目中,现在当我点击表单中的Submit按钮时,没有任何内容添加到数据库中,我也不知道为什么... 有什么想法吗?

我的代码:

1)Genre.cs

namespace BIBL.Model

public class Genre
{
    [Key]
    public int GenreID { get; set; }

    public string GenreName { get; set; }

}

ApplicationDbContext.cs

namespace BIBL.Data

public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {

    }
    public DbSet<Book> Book { get; set; }
    public DbSet<ApplicationUser> ApplicationUser { get; set; }
    public DbSet<FavBook> FavBook { get; set; }
    public DbSet<Genre> Genre { get; set; }

}

}

我要添加书的剃须刀页面。

AddBook.cshtml.cs

public class AddBookModel : PageModel
{

    private readonly ApplicationDbContext _db;
    [BindProperty]
    public Book Book { get; set; }
    public int SelectedGenreId { set; get; }

    public List<SelectListItem> GenreItems { set; get; }



    public AddBookModel(ApplicationDbContext db)
    {
        _db = db;
    }

    public IActionResult OnGet()
    {
        GenreItems = _db.Genre
                               .Select(a => new SelectListItem
                               {
                                   Value = a.GenreID.ToString(),
                                   Text = a.GenreName
                               })
                              .ToList();
        return Page();
    }






    public async Task <IActionResult> OnPostAsync(ServiceType ServiceType)
    {
        if(!ModelState.IsValid)
        {
            return Page();
            var selectedGenreId = this.SelectedGenreId;
        }

        _db.Book.Add(Book);
        await _db.SaveChangesAsync();

        return RedirectToPage("Index");

    }

然后AddBook.cshtml

<div class="col-5">
            <select asp-for="SelectedGenreId" asp-items="@Model.GenreItems">
                <option>Select one</option>
            </select>
        </div>

1 个答案:

答案 0 :(得分:0)

我将其更改为

 public async Task <IActionResult> OnPostAsync(Genre genre)
    {
        if (!ModelState.IsValid)
        {
            return Page();

        }
        var selectedGenreId = this.SelectedGenreId;

        _db.Book.Add(Book);
        await _db.SaveChangesAsync();

        return RedirectToPage("Index");

    }
}

但是它仍然无法正常工作。为什么?