2012-04-03 8 views
0

mvc3 ... でアプリケーションを開発していますが、ENUMを扱うのが大変です。mvc3のデータベースに動的enum値を保存するには

私は列挙型クラスを作っています

Hobby.cs

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 

    } 

を私はさらにその後HobbyDetail.cs

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を(使用しています)は、サービスクラスのメソッド..です彼らは正常に動作している..... 。

データベースに静的な値を格納できますが、ユーザーが列挙型のヘルプで作成したドロップダウンから選択したデータベースに動的な値を保存できません。 動的な列挙型の値をデータベースに格納するのに役立つように、コントローラの内部に配置するコードを教えてください。 してください。..

+0

保存する前に整数に変換します。 ます。public void SavePerson(人物人物){ (DBContext dbContext =新しいDbContextを(使用) - – Sachin

+0

@SachinのハイテクuはあなたがLINQ(悪いフォーマットのための謝罪を)使用してオブジェクトを保存していると仮定し – user1274646

+0

that..please行う方法を私を見ることができます){ dbPerson.Hobby =(int)person.Hobby; dbContext.SaveChanges(); } } – Sachin

答えて

1

HobbyDetail.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 
} 

を、それがお役に立てば幸いです。 ..

+0

'{HobbyId =(byte)value; } '? –

関連する問題