Asp.net mvc 具有不同名称的字段上的外键

Asp.net mvc 具有不同名称的字段上的外键,asp.net-mvc,Asp.net Mvc,我已经创建了一个名为tbGeneralOptions的表,其中保存了我应用程序中问题的一些默认答案。选项为是、否、不适用,值分别为1、2、3 public class tbGeneralOption { public int tbGeneralOptionID { get; set; } [Required(ErrorMessage = "Please enter an Option")] [Display(Name = "Option")] public st

我已经创建了一个名为tbGeneralOptions的表,其中保存了我应用程序中问题的一些默认答案。选项为是、否、不适用,值分别为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; }

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


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

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

我删除了属性
tbFamilyID
tbFamilyRoleID
,因为您已经在底部引用了family和familyRole,并且可以在那里访问ID,以防您需要显示它们,而您可能不应该这样做。以下是家庭成员的更新模型:

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; }
}

看看这个问题是否对你有帮助。但这与残疾或摄影许可领域有何联系?在我看来,我目前有@Html.DisplayFor(model=>model.Disability),它显示2的值,但我需要类似@Html.DisplayFor(model=>model.Disability.tbGeneralOption.OptionName)的东西,
tbFamilyMember.Disability
实际上是
tbGeneralOption
表中的常规选项之一?那么您需要在模型中反映这一点。因此
tbFamilyMember.Option
不应该是
int
,而应该是
tbGeneralOption
类型。我将更新答案以反映这一点。还有一个问题:如果选项只是族成员的属性,并且可以选择或不选择(布尔值),那么为什么有tbGeneralOption?tbGeneralOption在整个应用程序中使用,而不仅仅是在族成员中使用。我试图减少存储相同值的其他表。如果有更好的方法。。
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; }
}