我有 2 个包含其特异性的模型,我需要
在 HomeController 中声明的视图中访问两者。
虽然视图只能接受一种类型的模型,但您可以有多种方法在同一个视图中显示多个不同的模型数据。
第一种方式:
您可以将两个需要展示数据的模型组合成一个新模型,然后在视图中接收到新模型来展示不同模型的数据。
public class Tipo_Logradouro
{
public int Id { get; set; }
public string Abreviatura { get; set; }
public string Nome_Tipo { get; set; }
}
另一个模型:
public class Person
{
public int Id { get; set; }
public string Name{ get; set; }
}
组合新模型:
public class CombineModel
{
public List<Tipo_Logradouro> Tipo_Logradouros { get; set; }
public List<Person> Persons { get; set; }
}
控制器:
public IActionResult ShowData()
{
CombineModel combineModel = new CombineModel()
{
Persons = _context.Person.ToList(),
Tipo_Logradouros = _context.Tipo_Logradouro.ToList()
};
return View(combineModel);
}
查看:
@model CombineModel
@{
ViewData["Title"] = "ShowData";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>ShowData</h1>
<table class="table table-bordered">
<tr>
<td>Id</td>
<td>Name</td>
</tr>
@foreach (var item in (IEnumerable<Person>)Model.Persons)
{
<tr>
<td>@item.Id</td>
<td>@item.name</td>
</tr>
}
</table>
<br />
<br />
<table class="table table-bordered">
<tr>
<td>Id</td>
<td>Abreviatura</td>
<td>Nome_Tipo</td>
</tr>
@foreach (var item in (IEnumerable<Tipo_Logradouro>)Model.Tipo_Logradouros)
{
<tr>
<td>@item.Id</td>
<td>@item.Abreviatura</td>
<td>@item.Nome_Tipo</td>
</tr>
}
</table>
第二种方式:
您可以使用 ViewData 传递另一个模型来查看:
控制器:
public IActionResult ShowData()
{
List<Tipo_Logradouro> data = _context.Tipo_Logradouro.ToList();
ViewData["data"] = data;
List<Person> persons= _context.Person.ToList();
return View(persons);
}
查看:
@model IEnumerable<Person>
@{
ViewData["Title"] = "ShowData";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>ShowData</h1>
<table class="table table-bordered">
<tr>
<td>Id</td>
<td>Name</td>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.name</td>
</tr>
}
</table>
<br /><br />
<table class="table table-bordered">
<tr>
<td>Id</td>
<td>Abreviatura</td>
<td>Nome_Tipo</td>
</tr>
@foreach (var item in (IEnumerable<Tipo_Logradouro>)ViewData["data"])
{
<tr>
<td>@item.Id</td>
<td>@item.Abreviatura</td>
<td>@item.Nome_Tipo</td>
</tr>
}
</table>
这是测试结果: