Asp.net mvc MVC Razor按组显示数据
在分组显示数据时,我总是回到程序编程,我确信一定有更好的方法。你的想法Asp.net mvc MVC Razor按组显示数据,asp.net-mvc,functional-programming,procedural-programming,Asp.net Mvc,Functional Programming,Procedural Programming,在分组显示数据时,我总是回到程序编程,我确信一定有更好的方法。你的想法 //Example: Sales by Region @{ string _Region = ""; bool _FirstRecordFlag = false; } @foreach(DataRow Row in dataset.Tables["MonthlySales"].Rows) { if(_Region != Row["Region"].ToString
//Example: Sales by Region
@{
string _Region = "";
bool _FirstRecordFlag = false;
}
@foreach(DataRow Row in dataset.Tables["MonthlySales"].Rows)
{
if(_Region != Row["Region"].ToString())
{
if(_FirstRecordFlag)
{
@:</fieldset>
_FirstRecordFlag = true;
}
@:<fieldset>
@: <legend>@Row["Region"]</legend>
_Region = Row["Region"].ToString())
}
<div>
Display Sales data here...
</div>
}
}
//示例:按地区划分的销售额
@{
字符串_Region=“”;
bool _FirstRecordFlag=false;
}
@foreach(dataset.Tables[“MonthlySales”].Rows中的DataRow行)
{
if(_Region!=行[“Region”].ToString())
{
如果(_FirstRecordFlag)
{
@:
_FirstRecordFlag=true;
}
@:
@:@行[“区域”]
_Region=行[“Region”]。ToString()
}
在此处显示销售数据。。。
}
}
在显示数据时,我总是回到程序编程
我相信一定有更好的方法
当然还有更好的办法。由于您的问题被标记为mvc
,因此您应该使用视图模型并在控制器中执行所有此类分组,以填充将传递给视图的视图模型。Razor视图应该尽可能地哑——它将只显示视图模型中的信息。在Razor视图中使用数据集和数据行绝对是解决此问题的错误方法。您的视图将类似于一些可怕的意大利面代码
因此,请考虑如何在视图上显示信息。基于这种想法,您将能够提出一个视图模型来反映这种结构。然后,在控制器操作中,您所要做的就是将域模型(本例中的数据集)映射到将传递给视图的相应视图模型
如果这不是一个ASP.NET MVC应用程序,而是一个WebMatrix站点,您只有视图部分,那么您仍然应该定义一个视图模型,并让razor页面的代码隐藏部分将域模型映射到视图模型,然后由razor模板的视图部分进行操作。我非常喜欢您的答案。只是想问一下..ViewModel builder呢?所以你可以让控制器更薄?@GibboK,是的,我个人用Automapper来做这个。