具有关系 table 属性的下拉列表 [MVC .NET]

Dropdown List with a relationship table attribute [MVC .NET]

由于英语不是我的母语,对于接下来的句子中出现的任何错误,我深表歉意。

我创建了一个包含产品 (produtos) 和产品类型 (Categoria) 的数据库

我的 objective 是在 MVC 中创建一个从一对多的关系 (codefirst)。 其中一种产品 (Categoria) 可以有多个产品 (Produtos)

所以我创建了这个:

namespace HardwareWarehouse.Models
{
    public class Produto
    {
        public Produto()
        {

        }
        [Key]
        public int IDProduto { get; set; }

        [Required]
        [StringLength(50)]
        public string Nome { get; set; }

        [Required]
        public double Preco { get; set; }

        [Required]
        public double Peso { get; set; }

        [Required]
        [StringLength(255)]
        public string Descricao { get; set; }

        public int Imagem { get; set; }

        public DateTime UltimaAtualizacao { get; set; }

        public int Stock { get; set; } 

        public int CategoriaID { get; set; }

        public virtual Produto Produtos { get; set; }
    }
}

对于产品(类别)的 Category/type,我创建了这个..

namespace HardwareWarehouse.Models
{
    public class Categoria
    {
        public Categoria()
        {
            Produtos = new List<Produto>();
        }
        [Key]
        public int CategoriaID { get; set; }

        [Required]
        [StringLength(50)]
        public string Nome { get; set; }

        public virtual ICollection<Produto> Produtos { get; set; }
    }
}

所以我认为到目前为止我两个表之间的关系都很好。

接下来,我创建了一个控制器,并使用默认视图来存储一些数据。 看起来像这样:

这是我显示该信息的默认视图..

@model IEnumerable<HardwareWarehouse.Models.Produto>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Nome)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Preco)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Peso)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Descricao)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Imagem)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.UltimaAtualizacao)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Stock)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.CategoriaID)
            </th>
            <th></th>
        </tr>

    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Nome)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Preco)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Peso)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Descricao)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Imagem)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.UltimaAtualizacao)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Stock)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.CategoriaID)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.IDProduto }) |
                @Html.ActionLink("Details", "Details", new { id=item.IDProduto }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.IDProduto })
            </td>
        </tr>
    }

    </table>
</body>
</html>

百万美元的问题是? 如何使视图在该视图上显示 Categoria.Nome 而不是 CategoriaID 编号?

提前致谢..

添加到 Alisson 答案中,ViewModel 用于将多个模型发送到视图 这是 Link ViewModel in ASP.NET MVC