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>
你能告诉我做这个的最好/最简单的方法吗
在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>