c# - 如何在视图中将 2 个不同表中的数据显示为一个列表
问题描述
我有一个页面,我想在其中显示图像滑块内不同表格中的图像。但是我的图像一个接一个地显示。有没有办法将来自两个不同表的列表合并到一个视图中。
<div class="Slideshow">
@foreach (var table1 in Model.table1)
{
<img src=@Url.Content(table1.imageurl) width="300"/>
}
@foreach (var table2 in Model.table2)
{
<img src=@Url.Content(table2.imageurl) width="300" />
}
解决方案
如果您的属性是同一类型,则可以将它们连接起来:
@foreach (var table1 in Model.table1.Concat(Model.table2))
如果它们不是同一类型,那么您需要先将它们投影到通用类型中。这可能很简单:
@foreach (var table1 in Model.table1.Select(t => t.imageurl).Concat(Model.table2.Select(t => t.imageurl)))
从风格上讲,理想情况下,这将发生在模型或控制器而不是视图中。视图实际上应该只绑定到模型上的属性,而不需要操作它们。
例如,您可以将计算属性添加到模型中:
public IEnumerable<SomeType> Tables
{
get { return table1.Contact(table2); }
}
然后在您看来,您只需遍历Model.Tables
. 或者,如果您真的只需要一个表列表,那么您的模型应该只有一个,并且您应该在填充模型时组合不同的数据源。但是我们越深入这个,我们就必须对你的数据模型做出更多的假设。
推荐阅读
- c# - 在 C# 中的 Process.Start 参数中传递引号
- android - 从房间数据库中获取数组 - Android、Kotlin
- python - 使用 epoch 和 batch 进行神经网络优化
- huawei-mobile-services - 在 Android 上启动华为花瓣地图路线
- c++ - C++ 阶乘函数返回 inf
- mongodb - 将字段移动到 MongoDB 中数组中的特定对象
- python - 根据字符串在列表中的位置,将不同的字符串附加到字符串列表中
- openedge - Progress 11.6 程序和appBuilder,编译结果窗口字体太小
- python - 监控每个进程的 CPU 和内存使用情况
- javascript - 要计数器继续计数吗?