Asp.net mvc 如何在mvc3中保存数据库中的动态枚举值

Asp.net mvc 如何在mvc3中保存数据库中的动态枚举值,asp.net-mvc,asp.net-mvc-3,nhibernate,enums,Asp.net Mvc,Asp.net Mvc 3,Nhibernate,Enums,我正在mvc3中开发一个应用程序。。。 我在处理ENUM的事情上花了很多时间 我制作了一个枚举类: 业余爱好 public enum Hobby { [Display(Name = "Dancing")] Dancing = 1 , [Display(Name = "Singing")] Singing = 2 , [Display(Name = "Painting")] Painting = 3 ,

我正在mvc3中开发一个应用程序。。。 我在处理ENUM的事情上花了很多时间

我制作了一个枚举类:

业余爱好

    public enum Hobby
    {
    [Display(Name = "Dancing")]
    Dancing = 1
    ,
    [Display(Name = "Singing")]
    Singing = 2
    ,
    [Display(Name = "Painting")]
    Painting = 3
    ,
    [Display(Name = "Cooking")]
    Cooking = 4
    ,
    [Display(Name = "Photography")]
    Photography = 5

    }
我在另一个名为hobbydeail.cs的类中使用了Hobby类

 public class HobbyDetail
{
    [Key]
    public virtual int HobbyDetailId { get; set; }

    [EnumDataType(typeof(Hobby), ErrorMessageResourceType = typeof(Resources),        ErrorMessageResourceName = "HobbyRequired")]
    [Display(Name = "lblHobby", ResourceType = typeof(Resources))]
    public virtual Hobby Hobby { get; set; }

    public virtual string StudyMedium { get; set; }
    public virtual decimal Fees { get; set; }
    public virtual char ForWhom { get; set; }
    public virtual Boolean InclusiveStudyMaterial { get; set; }
    public virtual int AgeFrom { get; set; }
    public virtual int AgeTo { get; set; }
    public virtual string HobbyInfo { get; set; }

}
然后,我在另一个类中创建了上述类的对象

将Person.cs命名为

  public virtual HobbyDetail Hobby { get; set; }
我已在控制器中插入以下代码:

 public viewResult(Person person)
 {


 PersonalProfileService personalProfileService = new PersonalProfileService();

 person.Hobby.Hobby = Hobby.Dancing;
 personalProfileService.SaveBasicProfileWithHobby(person);

 }
我使用的是NHibernate,SaveBasicProfileWithHobby()是服务类的方法。。他们工作得很好

我可以将静态值存储在数据库中,但无法将动态值保存到数据库中用户在enum帮助下从下拉列表中选择的内容。 建议我放置在控制器中的行代码,这样可以帮助我在数据库中存储动态枚举值。 请..

hobbydeail.cs:

public short HobbyId {get; set;}
并获得如下值:

    public Hobby Hobby
    {
        get
        {
            return (Hobby)HobbyId;
        }
        set
        {
            HobbyId = (byte)Hobby;
        }
    }
您的枚举可以如下所示:

public enum Hobby : byte
{
    Dancing = 1,
    Singing = 2
}

希望有帮助…

保存前将其键入强制转换为int。@Sachin嗨,你能告诉我怎么做吗..请假设你正在使用LINQ(对格式错误表示歉意)-public void SavePerson(Person-Person){using(DBContext-DBContext=new-DBContext()){dbPerson.Hobby=(int)Person.Hobby;DBContext.SaveChanges();}@Sachin嗨,我试过watu说,但它仍然不起作用…我已经更新了我的代码…请看一下。。。。。也许这将帮助您解决我的问题…这可能是因为dbperson.Hobby或person.Hobby必须为空,并且您正在尝试获取空对象的.Hobby,因此错误不应该是
设置{HobbyId=(byte)value;}