Asp.net mvc 如何在mvc3中保存数据库中的动态枚举值
我正在mvc3中开发一个应用程序。。。 我在处理ENUM的事情上花了很多时间 我制作了一个枚举类: 业余爱好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 ,
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;}
?