Asp.net mvc4和实体框架,显示名称,而不是显示两个相关表的ID
我有两个表,书和类别。Asp.net mvc4和实体框架,显示名称,而不是显示两个相关表的ID
------------- -------------- | book | | Category | ------------- -------------- |Id | | Id | |CategoryId | | CategoryName| |Title | --------------- |Description| ------------
我使用实体框架,从数据库中获取数据并返回以查看是这样的:
控制器
using (var db = new BookEntities()){
return View(db.Book.ToList())
}
我可以在书表,但我不显示所有数据不知道如何显示类别名称而不是显示CategoryId。
我是新来的Asp.net mvc4和实体框架。
请帮帮我。 感谢
在书的模型定义,你可以定义表示相关的类别记录,像这样的对象:
public virtual Category Category{ get; set; }
确保的CategoryId配置为FK。然后,您可以使用Book.Category.CategoryName
我觉得我已经做到了,但它仍然显示CategoryId,也许我错过了一些部分。 你能否给我举个例子。 感谢您的帮助。 – sspn 2013-02-21 04:35:40
您可以发布您的Book模型和您的类别模型的代码吗? – 2013-02-21 04:37:33
抓住类别名称您是否先从数据库表开始,然后让EF创建您的模型?如果是这样,那么两个表之间的数据库中不能有外键关系。
否则这应该很好地工作作为自己的看法:
@using NamespaceOfBookModel
@model IList<Book>
@foreach (var book in Model)
{
@book.Title
@book.Category.CategoryName
}
首先创建一个视图模型
public class BookViewModel
{
public int id;
public int Title;
public int Description;
public Category Category;
}
public class Category
{
public int CategoryId;
public string CategoryName;
}
在您的LINQ查询试试这个;
public List<BookViewModel> GetList()
{
var books = db.Book
.select(b=> new BookViewModel()
{
id = b.id,
Title = b.Title,
Description = b.Description,
Category = b.Category
});
return books.ToList<BookViewModel>();
}
现在,在您看来,在页面的顶部作为;
@model IEnumerable<BookViewModel>
然后你可以像访问它;
@foreach(var item in Model)
{
<h1>@item.Category.CategoryName</h1>
}
如果模型配置好,你应该在图书类别属性,那么你可以访问相关类别的任何属性为每本书像这样'book.Category.CategoryName' – JOBG 2013-02-21 04:13:21