c# - 试图在同一视图上显示来自同一模型的两个不同的数据表
问题描述
我正在尝试使用 MVC 在同一视图页面中将来自单个模型的数据显示为两个不同过滤的表。
我可以让第一个表完美地工作,但是第二个表过滤了第一个表中已经过滤的数据。
所以示例原始数据类似于
鲍勃,10 岁,伦敦比尔,12 岁,巴黎鲍勃,10 岁,纽约
我想要一张桌子
比尔,12 鲍勃,10
和伦敦巴黎纽约的单独表
但我得到的是伦敦巴黎的第二张桌子
第一个表的代码如下
<tbody>
@foreach (var item in Model.Select(p => new { p.PlayerId, p.Position, p.Name, p.RankScore, p.CompsPlayed }).OrderBy(p=>p.Position).Distinct())
{
<tr>
<td class="text-center">
@Html.DisplayFor(modelItem => item.Position)
</td>
<td>
<a asp-action="Index" asp-controller="PlayerResults" asp-route-playerid="@item.PlayerId"> @Html.DisplayFor(modelItem => item.Name)</a>
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.PlayerId)
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.RankScore)
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.CompsPlayed)
</td>
</tr>
}
</tbody>
第二张桌子就像
@foreach (var item in Model.Select(c => new { c.Comp, c.CompID, c.Players, c.Old }).Where(o => o.Old == false).Distinct())
{
<tr>
<td class="text-center">
<a asp-action="Index" asp-controller="CompResults" asp-route-id="@item.CompID"> @Html.DisplayFor(modelItem => item.Comp)</a>
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.CompID)
</td>
<td class="text-center">
@Html.DisplayFor(modelItem => item.Players)
</td>
</tr>
}
</tbody>
所以我很确定与第一次过滤不同的是第二次过滤。
任何建议如何在两个表之间重置?
或者更好的方式来获取数据。
我知道换一种观点会更好..但这不是老板想要的
解决方案
这是一个简单的工作演示,您可以参考并修改您的代码:
模型
public class User
{
public int Id { get; set; }
public string Email { get; set; }
[Display(Name ="First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
public string FullName { get; set; }
public int Age { get; set; }
public string Position { get; set; }
}
看法
@model IEnumerable<Demo1.Models.User>
<h2>Table1</h2>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.FullName)
</th>
<th>
@Html.DisplayNameFor(model => model.Age)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.OrderBy(p=>p.Position).Select(p => new { p.FullName, p.Age}).Distinct())
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.FullName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Age)
</td>
</tr>
}
</tbody>
</table>
<h2>Table2</h2>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Position)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Select(p => new { p.Position }).Distinct())
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Position)
</td>
</tr>
}
</tbody>
</table>
结果
推荐阅读
- python - 如何在烧瓶中检查是否在 url 中传递了可变参数?
- php - 如何在 Laravel 模型中在函数之前创建一个单词
- c# - 如何像使用 Testng.xml 一样创建 Nunit.xml 测试运行器?
- c++ - std::function 的可调用目标可以在执行期间合法地破坏 std::function 吗?
- css - 如何防止 JavaFX FXML 菜单项的文本填充从菜单继承
- r - 如何在R中的一列中分隔2个数字
- python - 在 Python 中使用频率百分比绘制直方图
- c# - 如何在第一次订阅创建和最后一次订阅处置中引入副作用?
- go - 嵌套提升的接口方法变得不可见
- ios - UITextView 保存数据