MVC中的汇总表

本文关键字:汇总表 MVC | 更新日期: 2023-09-27 17:59:01

我是MVC的新手,我有一个关于汇总表中的行数据的问题。

一些背景:

首先,我用一条普通的SQL语句收集了大量数据。我使用DataTable来存储数据。然后我用一个普通的HTML表输出数据。这工作得很好,我对此没有任何问题。

我现在想总结每一行的所有值,并在最下面的一行中显示结果。

我知道我已经可以在数据层中做到这一点了。循环遍历数据表,并将行的值汇总到一个新行中。最后将"摘要行"作为最后一行追加

部分代码:

    <tr class="header">
      <th>Person</th>
      <th>NrOfRows</th>
    </tr>
    <% foreach (System.Data.DataRow row in Model.Rows) { %>
    <tr>
        <td><%: row["Name"].ToString()%></td>
        <td><%: row["NrOfRows"].ToString()%></td>
    </tr>

你能告诉我做这个的最好/最简单的方法吗

MVC中的汇总表

在ControllerAction中进行计算。像这样的。。。

public ActionResult Index()
{
    var rows = this.repository.GetAll();
    this.ViewData["total"] = rows.AsEnumerable().Select(o => o["NrOfRows"]).Select(o => int.Parse(o)).Sum();  
    return this.View(rows);
}

您应该考虑是否不想将数据"打包"到模型(类)中。在mvc项目的模型部分添加类:

public class YourModel
{
 public string Name
 public int NrOfRows
 public YourModel(string name, int nrOfRows) 
 {
  Name = name;
  NrOfRows = nrOfRows;
 }
}

然后在你的控制器方法你做:

public ActionResult Summarize(/*parameters list*/) 
{
 var rows = (get data) //In here you assign here your table content
 ViewData.Model = rows.Select(row => new YourModel(row["Name"], int.Parse(row["NrOfRows"])));
 ViewData["nrRowCount"] = rows.Select(row => row.NrOfRows).Sum();
 return View();
}

然后你进入视图:

<table>
<th>Person</th>
<th>nrOfRows</th>
 <%: foreach(var yourModel in Model) { :%>
   <tr>
     <td>yourModel.Name</td>
     <td>yourModel.NrOfRows</td>
   </tr>
  <%: } :%>
   <tr>
     <td>Summary: </td>
     <td> <%: ViewData["nrRowCount"] %:></td>
   </tr>
</table>