2013-04-18 42 views
0

我创建了一个名为tbGeneralOptions的表,其中包含我的应用程序中问题的一些默认答案。选项为Yes,No,N/A,值分别为1,2,3。具有不同名称的字段上的外键

public class tbGeneralOption 
{ 
    public int tbGeneralOptionID { get; set; } 

    [Required(ErrorMessage = "Please enter an Option")] 
    [Display(Name = "Option")] 
    public string OptionName { get; set; } 

    public virtual ICollection<tbFamilyMember> tbFamilyMember { get; set; } 
    public virtual ICollection<tbFamily> tbFamily { get; set; } 

} 

在我的tbFamilyMember表中,我将上述选项中的值存储在Disability和PhotoPermission字段中。

public class tbFamilyMember 
{ 
    [Display(Name = "Family Member ID")] 
    public int tbFamilyMemberID { get; set; } 

    [Display(Name = "Family ID")] 
    public int tbFamilyID { get; set; } 

    [Required(ErrorMessage = "Please select a Role")] 
    [Display(Name = "Role")] 
    public int tbFamilyRoleID { get; set; } 

    [Display(Name = "Firstname")] 
    public string Firstname { get; set; } 

    [Display(Name = "Surname")] 
    public string Surname { get; set; } 

    [Required(ErrorMessage = "Please select if the Family Member has a disability")] 
    [Display(Name = "Disability")] 
    public int Disability { get; set; } 

    [Required(ErrorMessage = "Please select if the Family Member has given permission for photographs")] 
    [Display(Name = "Photo Permission")] 
    public int PhotoPermission { get; set; } 

    public virtual tbFamily tbFamily { get; set; } 
    public virtual tbFamilyRole tbFamilyRole { get; set; } 
    public virtual tbGeneralOption tbGeneralOption { get; set; } 
} 

我现在的问题是如何在我的视图中显示存储值的OptionName。

我假设我可以通过外键进行链接,但如果字段名称不匹配,可以这样做吗?

+0

看看这个问题是否可以帮到你。 http://stackoverflow.com/questions/15572214/net-4-5-foreign-key-data-annotation-c-sharp –

回答

0

根据以下您的意见,根本不需要tbGeneralOption,因为每种类型的选项都是固定的,并且静态 - 选项不会动态添加。所以你应该在有选项的类型上创建选项作为布尔属性。此外,您可以删除这些选项的错误消息,因为根据定义,选项不是必需的。

我删除性能tbFamilyIDtbFamilyRoleID,因为你已经在底部和ID参考家人和familyRole是可访问的想法在那里,如果你需要显示它们,你可能不应该。这里是家庭成员更新模型:

public class tbFamilyMember 
{ 
    public int tbFamilyMemberID { get; set; } 

    [Display(Name = "Firstname")] 
    public string Firstname { get; set; } 

    [Display(Name = "Surname")] 
    public string Surname { get; set; } 

    [Display(Name = "Disability")] 
    public bool Disability { get; set; } 

    [Display(Name = "Photo Permission")] 
    public bool PhotoPermission { get; set; } 

    public virtual tbFamily tbFamily { get; set; } 
    public virtual tbFamilyRole tbFamilyRole { get; set; } 
} 
+0

但是,如何链接到残疾或PhotoPermission字段?在我看来我目前有@ Html.DisplayFor(model => model.Disability)它显示值2但我需要像@ Html.DisplayFor(模型=> model.Disability.tbGeneralOption.OptionName) – Stephen

+0

所以,'tbFamilyMember .Disability'实际上是'tbGeneralOption'表中的常规选项之一吗? – Floremin

+0

是的,这是正确的 – Stephen

相关问题