【问题标题】:How to declare a list that contain an array with 2 types of data?如何声明包含具有 2 种数据类型的数组的列表?
【发布时间】:2019-04-30 14:50:59
【问题描述】:

到目前为止我有这个列表:

    List<object> lista = new List<object>();
    foreach (var item in group)
    {
        lista.Add(new
        {
            ver = item.FirstOrDefault().vereda.DESCRIPCION,
            prod = item.Count()
        });
    }

    ViewBag.veredasEncu = lista;

我必须将该数据发送到视图才能构建表格:

 <tbody>

 @{
     if (ViewBag.veredasEncu != null)
     {
         List<object> lis = ViewBag.veredasEncu;

         for (int i = 0; i < lis.Count(); i++)
         {
             <tr>
             <td></td>
             <td></td>
             </tr>
         }
     }
  }

</tbody>

我无法将信息放在&lt;td&gt; 标签上,因为foreach 迭代中的每个项目都会抛出以下内容:

item = {ver = "Loma", prod = 5}

我怎样才能使这 2 个值看起来像一个数组,或者有没有办法将它们分开以便将它们放置在正确的标签中?

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/4343336/…
  • 没什么用
  • 为什么不能在 for 循环中访问这些值?喜欢&lt;td&gt;@lis[i].ver&lt;/td&gt;
  • @Haldo 因为ver 不是对象的一部分。就像每个项目都有一个唯一的值或数据,显示为string="{ver = "Loma", prod = 5}"。无论如何,我已经找到了解决它的方法。
  • 那么您应该发布您的答案并将其标记为正确

标签: c# html razor


【解决方案1】:

我通过创建一个类解决了这个问题:

public class dataTab
{
    public string ver { get; set; }
    public int prod { get; set; }
}

然后只是改变这个循环:

lista2.Add(new dataTab
            {
                 ver = item.FirstOrDefault().vereda.DESCRIPCION,
                 prod = item.Count()
            });

所以它可以像这样在 HTML 中发布:

foreach (var item in ViewBag.veredasEncu)
 {
    <tr>
       <td>@item.ver</td>
       <td>@item.prod</td>
    </tr>
 }

但是我不确定为我需要创建的每种类型的列表创建一个类是个好主意。如果有人知道如何以更通用的方式填写列表,请回复。

【讨论】:

  • 一般来说,你应该这样做。这些被称为viewmodels。您可以(也许应该)更进一步,将视图模型分配给视图,而不是通过视图包传入。
  • 所以如果我需要用不同的数据填充另外 5 个表,它仍然有效吗?同样对于这种情况,出于同样的原因,我认为将数据作为视图模型传递并不好。正如老师常说的,“它看起来像 spagueti 代码”。
  • 'Spaghetti code' 不是由你编写的代码量来定义的,而是由如果结构不正确,它如何相互连接,并且变得难以解开来定义的。可能还有其他方法来构造视图模型以减少它们的数量(例如,descriptionvalue 可以用于所有视图模型,并且您可以为所有表共享相同的视图模型),但我不不看结构就知道
  • 实际上它可能很有用,就像将一个 6 厘米的面包分成 3 个 2 厘米的面包。感谢您的建议
猜你喜欢
  • 1970-01-01
  • 2022-11-25
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多