在视图中显示来自两个不同模型的数据
Displaying data from two different model in a view
我是从 book.I 学习 ASP.NET MVC 的新手,正在使用 NInject 实现 IoC。我已经为 Job 和 Location 创建了一个数据模型,如下所示
Table 姓名 - 职位详情
JobId<PK>
LocationId<FK>
JobName
Table 姓名 - 地点
LocationId<PK>
LocationName
我已经为 Location 和 JobDetails 创建了实体,如下所示
工作详情
public class JobDetails
{
[Key]
public int JOBID { get; set; }
public int LocationID { get; set; }
public string JOBNAME { get; set; }
}
位置
public class Location
{
[Key]
public int LocationID{ get; set; }
public string LocationName { get; set; }
}
还有我的摘要和上下文 Class 工作详细信息和位置如下
public interface IJobDetails
{
IEnumerable<JobDetails> jobDetailsInterface { get; }
}
public interface ILocation
{
IEnumerable<Location> locationInterface { get; }
}
public class EFLocationRepository : ILocation
{
public EFDbContext context = new EFDbContext();
public IEnumerable<Location> locationInterface
{
get { return context.Location; }
}
}
public class EFJobRepository : IJobDetails
{
public EFDbContext context = new EFDbContext();
public IEnumerable<JobDetails> jobDetailsInterface
{
get { return context.JobDetails; }
}
}
我的工作和地点模型class如下
public class JobListViewModel
{
public IEnumerable<JobDetails> jobDetails { get; set; }
}
public class LocationListViewModel
{
public IEnumerable<Location> Location { get; set; }
}
在我的 JobDetail 控制器中,我想显示位置名称而不是位置 ID。
我的 JobDetail 控制器如下
public class JobController : Controller
{
public IJobDetails repository;
public JobController(IJobDetails job)
{
repository = job;
}
public ViewResult List()
{
return View(repository.jobDetailsInterface);
}
}
如何在我的工作视图中显示位置名称而不是位置 ID?
N.B-我正在从 Adam Freeman 的书中学习 MVC 并尝试创建一些东西 new.Please 让我知道我所做的是否正确。
添加到 sleeyuen 的回复中。您可能希望将 "navigation" 属性 添加到 JobDetails
模型,如下所示:
public class JobDetails
{
[Key]
public int JOBID { get; set; }
public int LocationID { get; set; }
public string JOBNAME { get; set; }
public virtual Location JobLocation { get; set; }
}
那么您应该可以通过以下方式从视图中访问位置名称:repository.jobDetailsInterface.JobLocation.LocationName
在您的场景中,我相信 entity framework 能够从模型结构中推断出关系,因此您不需要设置实体配置
请注意,这种方法会导致 N+1
希望这对您有所帮助:)
我是从 book.I 学习 ASP.NET MVC 的新手,正在使用 NInject 实现 IoC。我已经为 Job 和 Location 创建了一个数据模型,如下所示
Table 姓名 - 职位详情
JobId<PK>
LocationId<FK>
JobName
Table 姓名 - 地点
LocationId<PK>
LocationName
我已经为 Location 和 JobDetails 创建了实体,如下所示
工作详情
public class JobDetails
{
[Key]
public int JOBID { get; set; }
public int LocationID { get; set; }
public string JOBNAME { get; set; }
}
位置
public class Location
{
[Key]
public int LocationID{ get; set; }
public string LocationName { get; set; }
}
还有我的摘要和上下文 Class 工作详细信息和位置如下
public interface IJobDetails
{
IEnumerable<JobDetails> jobDetailsInterface { get; }
}
public interface ILocation
{
IEnumerable<Location> locationInterface { get; }
}
public class EFLocationRepository : ILocation
{
public EFDbContext context = new EFDbContext();
public IEnumerable<Location> locationInterface
{
get { return context.Location; }
}
}
public class EFJobRepository : IJobDetails
{
public EFDbContext context = new EFDbContext();
public IEnumerable<JobDetails> jobDetailsInterface
{
get { return context.JobDetails; }
}
}
我的工作和地点模型class如下
public class JobListViewModel
{
public IEnumerable<JobDetails> jobDetails { get; set; }
}
public class LocationListViewModel
{
public IEnumerable<Location> Location { get; set; }
}
在我的 JobDetail 控制器中,我想显示位置名称而不是位置 ID。 我的 JobDetail 控制器如下
public class JobController : Controller
{
public IJobDetails repository;
public JobController(IJobDetails job)
{
repository = job;
}
public ViewResult List()
{
return View(repository.jobDetailsInterface);
}
}
如何在我的工作视图中显示位置名称而不是位置 ID?
N.B-我正在从 Adam Freeman 的书中学习 MVC 并尝试创建一些东西 new.Please 让我知道我所做的是否正确。
添加到 sleeyuen 的回复中。您可能希望将 "navigation" 属性 添加到 JobDetails
模型,如下所示:
public class JobDetails
{
[Key]
public int JOBID { get; set; }
public int LocationID { get; set; }
public string JOBNAME { get; set; }
public virtual Location JobLocation { get; set; }
}
那么您应该可以通过以下方式从视图中访问位置名称:repository.jobDetailsInterface.JobLocation.LocationName
在您的场景中,我相信 entity framework 能够从模型结构中推断出关系,因此您不需要设置实体配置
请注意,这种方法会导致 N+1
希望这对您有所帮助:)