具有关系 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
由于英语不是我的母语,对于接下来的句子中出现的任何错误,我深表歉意。
我创建了一个包含产品 (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