什么样的模型&;如果我想要数据库中的动态下拉列表,我应该在ASPMVC3中使用控制器

本文关键字:我应该 ASPMVC3 控制器 下拉列表 动态 amp 如果 我想要 什么样 数据库 模型 | 更新日期: 2023-09-27 18:28:44

我已经为这个解决方案找了好几个小时了。

我有三种型号的自动取款机。

优先级:

using System;
using System.Collections.Generic;
namespace IssueReportManagementTest.Models
{
    public class Priority
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
}

类别:

using System;
using System.Collections.Generic;
namespace IssueReportManagementTest.Models
{
    public class Category
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
}

问题是,我有一个Issue模型,我想要其他模型的动态下拉列表。

发布

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace IssueReportManagementTest.Models
{
    public class Issue
    {
        [Key]
        public int IssueID { get; set; }
        public DateTime Added { get; set; }
        public DateTime Modiefied { get; set; }

        public virtual Category Category { get; set; }
        public IEnumerable<Category> Categories { get; set; }
        public virtual Priority Priority { get; set; }
        public IEnumerable<Category> Priorities { get; set; }
        [Required]
        public string Title { get; set; }
        [Required]
        [DataType(DataType.MultilineText)]
        public string Description { get; set; }
    }
}

这是正确的吗?如果我想从优先级和类别中获得下拉列表,我需要在控制器中做什么。是的,它们存储在数据库中。

什么样的模型&;如果我想要数据库中的动态下拉列表,我应该在ASPMVC3中使用控制器

在Issue类中,您有Priority&类别,但您还需要每个(使用int)的外键

然后,您可以通过SelectList&DropDownListFor。

如果你需要一个代码示例,请告知,我会发布一些内容。

编辑

将FK添加到问题类中

 public class Issue
 {
    [Key]
    public int IssueID { get; set; }
    public DateTime Added { get; set; }
    public DateTime Modiefied { get; set; }
    public int PriorityID { get; set; }
    public int CategoryID { get; set; }

我使用ViewBag来填充DDL,如下所示:

    ViewBag.Genre = new SelectList(db.Genres, "GenreId", "GenreName", Model.GenreId);

Model(Issue)是您传递给View的内容,我使用ViewBag来放置DDL,因为它不是您模型的一部分,您只对在模型中设置CategoryID感兴趣

然后在你看来:

<tr>
    <td>@Html.LabelFor(m => m.GenreId)
    </td>
    <td>
        @Html.DropDownListFor(m => m.GenreId, (SelectList)ViewBag.Genre, new { @class = "ddl" })
        @Html.ValidationMessageFor(m => m.GenreId)
    </td>
</tr>

这是我从场景中获得的内容,您可以修改和调整它以适应您的代码。

在我的视图中,我有一个显示不同银行的下拉列表。

我从数据库中设置下拉列表值的操作方法:

public ActionResult MyActionMethod()
{
     MyViewModel viewModel = new MyViewModel
     {
          Banks = bankRepository.GetAll()
     }
     return View(viewModel);
}

这就是我的视图模型(只是部分视图):

public class MyViewModel
{
     public int BankId { get; set; }
     public IEnumerable<Bank> Banks { get; set; }
}

这是我的银行等级:

public class Bank
{
     public int Id { get; set; }
     public string Name { get; set; }
     public bool IsActive { get; set; }
}

这是我在视图中的下拉代码:

<td>Bank:</td>
<td>
     @Html.DropDownListFor(
          x => x.BankId,
          new SelectList(Model.Banks, "Id", "Name", Model.BankId),
          "-- Select --"
     )
     @Html.ValidationMessageFor(x => x.BankId)
</td>

我希望这能有所帮助。它没有做任何花哨的事情,只是填充了一个下拉列表。如果你需要更多的澄清,大声呼喊。

看看本教程(相当不错),这里有Prefix.db 的下拉菜单示例