我有两个表,预订和类别。
------------- -------------- | book | | Category | ------------- -------------- |Id | | Id | |CategoryId | | CategoryName| |Title | --------------- |Description| ------------
我使用实体框架从数据库中获取数据并返回视图,如下所示:
控制器
using (var db = new BookEntities()){
return View(db.Book.ToList())
}
我可以在book表中显示所有数据,但我不知道如何显示Category name而不是显示CategoryId。
我是Asp.net mvc4和实体框架的新手。
请帮帮我。 感谢
答案 0 :(得分:1)
在Book的模型定义中,您可以定义一个表示相关类别记录的对象,如下所示:
public virtual Category Category{ get; set; }
确保将CategoryId配置为FK。然后,您可以使用Book.Category.CategoryName
答案 1 :(得分:1)
首先创建一个视图模型
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>
}
答案 2 :(得分:0)
您是先开始使用数据库表,然后让EF创建模型吗?如果是这样,则两个表之间的数据库中不能存在外键关系。
否则这应该完全符合您的观点:
@using NamespaceOfBookModel
@model IList<Book>
@foreach (var book in Model)
{
@book.Title
@book.Category.CategoryName
}
答案 3 :(得分:0)
查看(.Cshtml)
<tr>
<td>@TradingHR.Repository.Repo.GetTeamMemberName(item.IdMember)</td>
</tr>
-在回购中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Web;
namespace TradingHR.Repository
{
public class Repo {
public static string GetTeamMemberName(long idMemeber)
{
DBEntities db = new DBEntities();
var value = (from c in db.Mi_TeamMember
where c.Id == idMemeber
select c.Name.FirstOrDefault();
return value;
}
}
}