Asp.net mvc 帮助将主详细信息数据显示到mvc3视图中
我有以下型号:Asp.net mvc 帮助将主详细信息数据显示到mvc3视图中,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我有以下型号: 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 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; }
}
但这让我更困惑的是这个错误信息:
System.Data.Edm.EdmEntityType::EntityType“MainPageModels”未定义键。定义此EntityType的键。
System.Data.Edm.EdmentySet:EntityType:EntitySet�主要型号� 是基于类型的�主页模型� 没有定义键的
这是我的控制器:
public ActionResult Index()
{
var pages = db.MainModels.Select(p => p.Pages).Select(c => c.Category);
return View(pages);
}
我可能错过了一些简单的东西 在此处发布此代码/语法
public class Person
{
[Key]
public int PersonID { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
}
public class DataContext : DbContext
{
EntitySet<Person> Persons { get; set; }
}
这只是一个示例,只是为了说明数据模型和视图模型之间的区别
然后,您的视图将是PersonAddViewModel的强类型视图在此处发布此视图以获取代码/语法
public class Person
{
[Key]
public int PersonID { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
}
public class DataContext : DbContext
{
EntitySet<Person> Persons { get; set; }
}
这只是一个示例,只是为了说明数据模型和视图模型之间的区别
然后,您的视图将是PersonAddViewModel的强类型视图这里是我的父子列表问题的解决方案: 我创建了一个ViewModel来容纳我的类别和页面:
public class HomeViewModels
{
[Key]
public int HomeViewKey { get; set; } //This is a MUST!
public IEnumerable<Category> ViewCategories { get; set; }
public IEnumerable<Page> ViewPages { get; set; }
public void CreateHomeViewModel(IEnumerable<Category> categories,
IEnumerable<Page> pages)
{
this.ViewCategories = categories;
this.ViewPages = pages;
}
}
最后,使用以下内容创建ul li列表:
@{var hvCategories = Model.ViewCategories;}
@foreach (var categories in hvCategories)
{
<li>@Html.ActionLink(categories.Name, "Index", "Home")
<ul>
@{var hvPages = Model.ViewPages
.Where(p => p.CategoryID == categories.CategoryID);}
@foreach (var pages in hvPages)
{
<li>@Html.ActionLink(pages.Name, "Index", "Home")</li>
}
</ul>
</li>
@{var hvCategories=Model.ViewCategories;}
@foreach(hvCategories中的var类别)
{
@ActionLink(categories.Name,“Index”,“Home”)
@{var hvPages=Model.ViewPages
.Where(p=>p.CategoryID==categories.CategoryID);}
@foreach(hvPages中的var页面)
{
- @ActionLink(pages.Name,“Index”,“Home”)
}
我希望这能帮助那些计划使用父子模型构建嵌套列表的人。这花了我两天的时间才弄明白。干杯!这里是我解决父子列表问题的方法: 我创建了一个ViewModel来容纳我的类别和页面:
public class HomeViewModels
{
[Key]
public int HomeViewKey { get; set; } //This is a MUST!
public IEnumerable<Category> ViewCategories { get; set; }
public IEnumerable<Page> ViewPages { get; set; }
public void CreateHomeViewModel(IEnumerable<Category> categories,
IEnumerable<Page> pages)
{
this.ViewCategories = categories;
this.ViewPages = pages;
}
}
最后,使用以下内容创建ul li列表:
@{var hvCategories = Model.ViewCategories;}
@foreach (var categories in hvCategories)
{
<li>@Html.ActionLink(categories.Name, "Index", "Home")
<ul>
@{var hvPages = Model.ViewPages
.Where(p => p.CategoryID == categories.CategoryID);}
@foreach (var pages in hvPages)
{
<li>@Html.ActionLink(pages.Name, "Index", "Home")</li>
}
</ul>
</li>
@{var hvCategories=Model.ViewCategories;}
@foreach(hvCategories中的var类别)
{
@ActionLink(categories.Name,“Index”,“Home”)
@{var hvPages=Model.ViewPages
.Where(p=>p.CategoryID==categories.CategoryID);}
@foreach(hvPages中的var页面)
{
- @ActionLink(pages.Name,“Index”,“Home”)
}
我希望这能帮助那些计划使用父子模型构建嵌套列表的人。我花了两天时间才弄明白。干杯!从你的帖子中可以看出,你已经指定了一个类型为MainModels的EntitySet,如果你想这样做,你需要指定一个键或某种id。MainModel类中的键?我已经浏览了好几个t我是一个mvc3 noob。MVC中通常使用两种类型,模型通常指从数据库获取数据的对象,或者可能是您的域模型。然后,您还有一个ViewModel,这是视图将使用的。您已经定义了实体数据模型,即查看如何通过DbContext访问主模型。这意味着实体框架希望此对象具有为ViewModels定义的键,通常没有数据库关联。请在viewmodel中发布一个id示例。从您的帖子中可以看出,您指定了一个EntitySet类型MainModels,如果你想这样做,你需要指定一个键或某种id。MainModel类中的键?我在SO中浏览了几个线程,只看到它们在主模型中声明模型类。我是mvc3 noob。MVC中通常使用两种类型,模型通常指的是at从数据库获取数据,或者它可能是您的域模型。然后,您还有一个ViewModel,这是您的视图将使用的。您定义了一个实体数据模型,即通过DbContext查看如何访问主模型。这意味着实体框架希望此对象具有为ViewModels定义的键,通常没有数据库关联。请在viewmodel中发布id的示例好吗?谢谢。如果viewmodel使用两个具有一对多关系(如个人订单)的数据模型,效果如何?我终于利用您的一些想法得到了我的列表。我将发布我的答案。谢谢。使用两个数据的viewmodel如何具有一对多关系的模型,如个人订单?我终于用你的一些想法得到了我的列表。我将发布我的答案。
@{var hvCategories = Model.ViewCategories;}
@foreach (var categories in hvCategories)
{
<li>@Html.ActionLink(categories.Name, "Index", "Home")
<ul>
@{var hvPages = Model.ViewPages
.Where(p => p.CategoryID == categories.CategoryID);}
@foreach (var pages in hvPages)
{
<li>@Html.ActionLink(pages.Name, "Index", "Home")</li>
}
</ul>
</li>