首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自DB的ASP.NET Razor页面下拉列表

来自DB的ASP.NET Razor页面下拉列表
EN

Stack Overflow用户
提问于 2019-05-27 18:18:51
回答 1查看 166关注 0票数 0

我正在ASP.NET Razor页面上编写应用程序(这是我的本职工作)。这个应用的主题是“库”,我有添加,删除,修改等。我想做的是。当我添加一本新书时,当它是一本书的类型时,我想使用数据库中的下拉列表。我一直在寻找这个,但我没有为自己找到可行的解决办法。

所以我的书类是: Book.cs

代码语言:javascript
复制
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

代码语言:javascript
复制
[Key]
    public int Id { get; set; }

    [Required]
    [Display(Name = "Gatunek")]
    public string Name { get; set; }

我要把这个添加到我的ApplicationDbContext中

ApplicationDbContext.cs

代码语言:javascript
复制
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {

    }

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

AddBook.cshtml.cs

代码语言:javascript
复制
[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

代码语言:javascript
复制
<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有工作关系。我只是不知道接下来我该怎么做才能进入下课名单。我对控制器的解决方案不感兴趣!

有什么想法吗?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 19:09:47

这可能重复以下几点:

但无论如何,我会试着回答:

  • 如果您用Razor语法编写它,可以使用与上面的链接相同的解决方案。创建一个HtmlDropdownFor,并且当该参数对您的List<Genre>执行LINQ查询时(类型列表或类型字典,无论您可能需要哪种类型)
  • 否则,您只需在每个需要<select></select>的表单中手动编写一个HTML输入即可。显然,这更费时,但是您可以在w3学校: HTML元素,特别是关于<select>的部分中找到更多关于如何做到这一点的信息。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56330775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档