我有以下型號:幫助顯示主從數據到MVC3視圖
public class Page
{
public int PageID { get; set; }
public string Name { get; set; }
public string Content { get; set; }
public DateTime? DateCreated { get; set; }
public bool IsPublished { get; set; }
public string ModifiedBy { get; set; }
public DateTime? DateModified { get; set; }
public int UserID { get; set; }
public int CategoryID { get; set; }
public virtual User User { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public int CategoryID { get; set; }
[Required(ErrorMessage = "Category name is required.")]
[Display(Name = "Category Name")]
public string Name { get; set; }
public virtual ICollection<Page> Pages { get; set; }
}
,我想填充這個導航列表:
<div id="centeredmenu" class="nav-border nav-color">
<ul>
@foreach (var pages in Model)
{
<li>CATEGORY NAME GOES HERE
<ul>
@foreach (var pages in Model)
{
<li>PAGE NAMES GO HERE</li>
}
</ul>
</li>
}
</ul>
</div>
但我實現控制器有問題。我想這個視圖模型:
public class MainPageModels
{
public Category Categories { get; set; }
public Page Pages { get; set; }
}
,但它只是讓我感到困惑,甚至更多與此錯誤消息:
System.Data.Edm.EdmEntityType:的EntityType「MainPageModels」沒有定義鍵。定義此EntityType的關鍵字。 System.Data.Edm.EdmEntitySet:EntityType:EntitySet「MainModels」基於沒有定義鍵的類型「MainPageModels」。
這是我的控制器:
public ActionResult Index()
{
var pages = db.MainModels.Select(p => p.Pages).Select(c => c.Category);
return View(pages);
}
我可能會丟失在這裏簡單的東西。
從你的帖子看來,你已經指定了一個MainModels類型的EntitySet,如果你想這樣做,你需要指定一個somesort的鍵或id。 –
MainModel類中的一個鍵?我一直在瀏覽SO中的幾個線程,只能看到他們在主模型中聲明模型類。我是mvc3 noob。 – Ron
MVC中通常使用2種類型,模型通常指從數據庫獲取數據的對象,或者它可能是您的域模型。 那麼你還有一個ViewModel,這是你的視圖將消耗。 您已經定義了一個實體數據模型,即查看您如何訪問MainModels,它是通過DbContext。這意味着實體框架期望此對象具有定義的鍵。對於ViewModels,通常不存在數據庫關係。 –