0
由於英語不是我的母語,因此我非常抱歉我在下一個會議中會出現任何錯誤。具有關係表屬性的下拉列表[MVC .NET]
我創建的產品(produtos)和類型的產品(Categoria)
我的目標是要創造很多的關係(codefirst)在MVC從一個數據庫。 如果一個類型的產品(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; }
}
}
而對於類別/類型產品(Categoria),我創造了這個..
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號碼?
在此先感謝..
佩德羅嗨,你還可以隨時問葡萄牙語堆棧溢出。無論如何,我建議你閱讀關於視圖模型。不用'Produto'和'Categoria'作爲你的視圖的模型,最好創建一個視圖模型(例如'ProdutoViewModel'),它可以容納你需要的所有屬性(包括'NomeCategoria')。你需要使用預測,這似乎是一種常見的做法。此外,這允許您用一些*數據註釋驗證*來修飾您的視圖模型,從而使您可以避免與數據庫實體混合。我希望我能以某種方式幫助。 – Alisson
因此,ViewModel本質上就像一個視圖..在數據庫環境中? 我仍然需要保留Produto和Categoria,因爲我將它用於CodeFirst,它是通過Entity Framework創建數據庫的模型,所以我想我不能擺脫它,對吧? 乾杯。 謝謝..我是新來的,(需要找到一種方法來upvote你XD) –
是的,你可以將一個ViewModel視爲一個數據庫中的視圖,加入相關的表。在使用EF時對投影進行一些研究,以及如何使用ViewModels。 – Alisson