C# 带有ASP.NET MVC 4和EF的下拉菜单
我试图在MVC4(实体框架,代码优先)中创建下拉菜单。我的目标是在类中准备值,所以我不需要在控制页上进行额外的编程C# 带有ASP.NET MVC 4和EF的下拉菜单,c#,.net,entity-framework,drop-down-menu,asp.net-mvc-4,C#,.net,Entity Framework,Drop Down Menu,Asp.net Mvc 4,我试图在MVC4(实体框架,代码优先)中创建下拉菜单。我的目标是在类中准备值,所以我不需要在控制页上进行额外的编程 public class Prefix { [Key] public int PrefixID { get; set; } [StringLength(20)] public string PrefixName { get; set; } } public class People { [Key] public int Person
public class Prefix
{
[Key]
public int PrefixID { get; set; }
[StringLength(20)]
public string PrefixName { get; set; }
}
public class People
{
[Key]
public int PersonID { get; set; }
[StringLength(20)]
public string FirstName { get; set; }
[StringLength(20)]
public string LastName { get; set; }
[ForeignKey("PrefixID")]
public Prefix Prefix { get; set; }
[Required]
public int PrefixID { get; set; }
public string FullName // this isn't working
{
get
{
return Prefix.PrefixName +" " + FirstName + " " + LastName;
}
}
}
public class PersonSalary
{
[Key]
public int SalaryId { get; set; }
//...
[ForeignKey("EmployeeID")]
public Person HEmployee {get;set;}
public int EmployeeID { get; set; }
}
SalaryController中的代码:
ViewBag.EmployeeID = new SelectList(db.People, "PersonID", "FullName", personsalary.EmployeeID);
在SalaryController上,我可以获得值为“Name-姓氏”的下拉菜单,但我需要“Prefix.Name-姓氏”。例如“John Doe先生”等。当前代码返回错误:
对象引用未设置为对象的实例
怎么做 确保您已经急切地初始化了模型的
Prefix
属性:
ViewBag.EmployeeID = new SelectList(
db.People.Include(p => p.Prefix),
"PersonID",
"FullName",
personsalary.EmployeeID
);
在People类中,将属性前缀标记为virtual。如果执行此操作,则在尝试访问此值时将加载相应前缀的值 达林建议的答案也会起作用。这是另一种方法