2015-06-15 81 views
0

我是MVC和Entity框架中的新成员,所以我在第一个项目中遇到了一些问题。很抱歉,如果我的问题是菜鸟:(如何在ASP.NET MVC中显示枚举

我在这一点上有什么:
我有表的用户(ID,姓名,密码,TYPEID,StatusID)和我对这个领域的查找表TYPEID,StatusID UserTypes和UserStatuses。

这里是为了更清楚

CREATE TABLE [dbo].[Users](
    [ID] [int] NOT NULL, 
    [Name] [varchar](512) NOT NULL, 
    [Password] [varchar](128) NOT NULL, 
    [TypeID] [int] NULL, 
    [StatusID] [int] NULL 
) 

CREATE TABLE [dbo].[UserStatuses](
    [ID] [int] NOT NULL, 
    [Description] [nvarchar](128) NULL 
) 


CREATE TABLE [dbo].[UserTypes](
    [ID] [int] NOT NULL, 
    [Description] [nvarchar](128) NULL 
) 

一些代码在UserStatuses表我店 “活动”, “阻止” 和UserTypes “管理员”, “用户”,“客人“

价值观UserTypes在未来MEY变化的话,我不惯于Users.TypeID字段转换在枚举(这是很重要的我!)

我需要什么:
如何在我生成视图时,显示TypeID字段的用户友好值“active”,“Blocked”用于StatusID和“Admin”,“User”,“guest”,而不是数字编辑器?

链接到一些好的文章是值得欢迎的笑脸:)

回答

1

EntityFramework允许您在POCO实体类中声明它称之为“Navigational Property”。欲了解更多信息,请阅读here。所以在你

区分你所能做的就是在代表UserStatusesUserTypesUsers POCO实体类申报一个导航属性,如下图所示:

public class User 
    { 
     public int id { get; set; } 

     // Other properties representing table columns here 

     public UserStatus UserStatus { get; set; } 
     public UserType UserType { get; set; } 
    } 

    public class UserStatus 
    { 
     public int Id { get; set; } 
     public string Description { get; set; } 
    } 

现在,你可以参考对应一个用户UserStatus对象。即在UI中,您可以使用user.UserStatus.Description来显示值。