【发布时间】:2018-04-10 16:10:58
【问题描述】:
我对 .NET MVC 非常陌生,正在尝试学习 MVC。我知道我在这里做错了,所以我需要你的帮助。我尝试做的是列出一组 10 家公司,然后为每个公司列出基于 companyID 的联系人。请假设实体和 DbContext 设置正确,只是控制器和视图之间的问题是我无法弄清楚如何:
这是我的模型:
namespace ERP.Models
{
[Table("ERP_Company")]
public class ERP_Company
{
[Key]
public int CompanyID { get; set; }
public string Name { get; set; }
}
[Table("ERP_CompanyContact")]
public class ERP_Contact
{
[Key]
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int CompanyID { get; set; }
}
}
从数据库中获取公司和联系人列表的方法:
namespace ERP.Models
{
public class Method1
{
private ERPEntities db = new ERPEntities();
public List<ERP_Company> getCompanyList()
{
List<ERP_Company> companyList = (
from c in db.ERP_Company
where c.Name.Contains("Network")
select c).Take(10).ToList();
return companyList;
}
public List<ERP_Contact> getContactList(int CompanyID)
{
List<ERP_Contact> contactList = (
from cc in db.ERP_CompanyContact
where cc.CompanyID == CompanyID
select cc).Take(50).ToList();
return contactList;
}
}
}
这是我做错的控制器:
namespace ERP.Controllers
{
public class Test1Controller : Controller
{
//private ERPEntities db = new ERPEntities();
Method1 _repository = new Method1();
public ActionResult Index()
{
ViewData["Company"] = _repository.getCompanyList();
ViewData["Contact"] = _repository.getContactList(CompanyID); // <-- Incorrect Here, but just to show that I want to pass the CompanyID
return View();
}
}
}
最后,我要列出公司的视图,然后根据 CompanyID 查询所有联系人并列出它们。
<ul>
@foreach (var item in ViewData["Company"] as List <ERP.Models.ERP_Company>
)
{
<li>@item.CompanyID | @item.Name</li>
<!-- Here is an EXAMPLE that I want to QUERY the Contact recordset and list all the contacts based on the CompanyID -->
<ul>
@for (var i = 0; i < 5; i++)
{<li>Contact @i</li>}
</ul>
}
</ul>
是否可以在循环中循环通过联系人模型(或记录集)?我怎样才能做到这一点?
提前致谢,
【问题讨论】:
-
首先,您为什么不使用 ViewModel 而不是 ViewData?其次,如果您正确构建模型,您可以在代码隐藏中将联系人列表附加到每个公司,然后在视图中循环浏览它们。如果您使用实体框架或类似的 ORM 来查询您的数据,它可能会自动为您执行此操作。
-
@ADyson 感谢您的回复。我是 MVC 的新手,我认为使用 ViewData 可以传递多个模型(公司和联系人)。能否提供示例代码?
-
ViewBag 和 ViewData 看起来既好又简单,但它们通常不是一个好主意。对于这样的事情,创建一个 ViewModel。这是一个具有您想要在视图中使用的值的模型。为此,它将是一个公司和一个 List
。然后像使用 ViewData 一样设置这些值。 -
@nurdyguy 如果您不介意,请提供示例代码。我是这个 .NET MVC 的初学者。谢谢
-
有人可以帮我提供上面两个 ERP_Company 和 ERP_Contact 模型的示例代码 ViewModel 吗?我现在正在阅读有关 ViewModel 的信息,并且仍然围绕着这个概念。
标签: c# asp.net-mvc razor