在mvc中使用多个控制器
本文关键字:控制器 mvc | 更新日期: 2023-09-27 18:21:11
我正在构建一个管理特定公司员工的web应用程序。我有两个控制器:Staff
和Company
。两个控制器都有标准的CRUD方法。
当我访问URL sitename/Company/Staff/CompanyId
时,我想在详细信息视图中显示该公司雇用的所有员工。
Details()
方法的当前实现:
// GET: Company/Details/1
public ActionResult Details(int id)
{
Company co = db.Company.Find(id);
return View(co);
}
如何修改当前的Details()
方法以支持此行为?
如果没有代码,很难给你精确的答案,但如果我对每个控制器都有正确的理解,你就会有一个与数据库相对应的模型。因此,如果您想使用来自两个或多个模型的实际数据,则必须使用Linq进行连接。
第一步,您与公司和员工一起创建ViewModel:
public class MyViewModel
{
public Company Company { get; set; }
public Employee Employee { get; set; }
}
之后,在您的控制器操作中,您应该填充此ViewModel并传递给视图,因此它看起来像这样:
[Route("Company/Staff/{id}")]
public ActionResult Details(int id)
{
var viewModel =
from c in db.Company
join e in db.Employee on c.CompanyId equals e.Id
where c.CompanyId == id
select new MyViewModel { Company = c, Employee = e };
return View(viewModel);
}
View中的代码应该是这样的
@model IEnumerable<YourAppName.Models.MyViewModel>
@foreach (var item in Model)
{
<div>
<p>@item.Employee.Name</p>
</div>
}