我已经成功地创建了这个查询,用于通过lambda表达式以及其他方式从6个表中获取数据。(对不起,我不知道如何称呼其他方法)。无论如何,现在的问题是,我不知道如何将这个对象发送到视图。通常,我通常发送模型或ViewModel的对象。请帮帮我!
提前谢谢你!
我尝试过创建ViewModel,并包含了查询中包含的所有对象,但我只是无法解决这些问题。这可能是错误的策略,或者我只是不知道如何去做。
var my = _context.Clients.Join(_context.Consultants, cli => cli.consultantID, con => con.ConsultantId,
(cli, con) => new
{
aClient = cli,
aConsultant = con
}).Join(_context.ClientPhone.Where(ph => ph.PrimaryPhone), cli => cli.aClient.ClientCNIC, ph => ph.ClientCNIC, (cli, ph) => new
{
cli.aClient,
cli.aConsultant,
aPhone = ph
}).Join(_context.clientemail.Where(e => e.PrimaryEmail), cli => cli.aClient.ClientCNIC, e => e.ClientCNIC, (cli, e) => new
{
cli.aClient,
cli.aConsultant,
cli.aPhone,
aEmail = e
}).Join(_context.ITRStatus, cli => cli.aClient.ClientCNIC, itr => itr.ClientCNIC, (cli, itr) => new
{
cli.aClient,
cli.aConsultant,
cli.aEmail,
cli.aPhone,
aItr = itr
}).Join(_context.ClientStatus, cli => cli.aItr.ClientstatusId, ss => ss.clientstatusId, (cli, ss) => new
{
cli.aClient,
cli.aConsultant,
cli.aEmail,
cli.aItr,
cli.aPhone,
aStatus = ss
}).Select(s => new
{
s.aClient.clientName,
s.aClient.ClientCNIC,
s.aClient.ClientPassword,
s.aConsultant.ConsultantName,
s.aEmail.Email,
s.aPhone.Phone,
s.aStatus.StatusString
}).ToList();
return View(my);我所期望的结果是,我以某种方式通过Model将对象发送到View,然后使用foreach在View中迭代模型。
发布于 2019-07-13 19:35:28
显然,我尝试了几种方法,并找到了解决我自己的问题!
这就是我所做的。
只需为查询中包含的对象创建视图模型。然后在控制器中如下所示:
var viewModel = new List<ClientIndexViewModel>();
foreach (var item in my)
{
viewModel.Add(new ClientIndexViewModel()
{
Client = item.aClient,
Phone = item.aPhone,
Consultant = item.aConsultant,
Email = item.aEmail,
ClientStatus = item.aStatus,
});
}
return View(viewModel);View.cshtml
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@item.Client.clientName
</td>
</tr>它是动态的,也提供IntelliSense。顺便说一句,我刚刚贴出了代码中足以理解的部分,原谅任何不足之处。
发布于 2019-07-13 15:04:08
您可以在视图中执行类似于“模型动态”之类的操作。这样你就可以直接把你的变量“我的”传递给它。
顺便说一句,你将失去你的模型的IntelliSense
https://stackoverflow.com/questions/57020151
复制相似问题