在分组显示数据时,我一直回到过程编程,我相信一定有更好的方法。你的想法?
//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>
}
}
在中显示数据时,我总是回到过程编程我相信一定有更好的方法
当然还有更好的方法。由于您的问题用mvc
标记,因此您应该使用视图模型,并在控制器中执行所有此类分组,以填充将传递给视图的视图模型。Razor视图应该尽可能地愚蠢——它只显示视图模型中的信息。在Razor视图中使用DataSet和DataRows绝对是解决这个问题的错误方法。你的观点会像一些可怕的意大利面条代码。
因此,请考虑如何在视图中显示信息。基于这种想法,你将能够提出一个反映这种结构的视图模型。然后,在控制器操作中,您所要做的就是将域模型(在您的案例中是DataSet)映射到将传递给视图的相应视图模型。
如果这不是一个ASP.NET MVC应用程序,而是一个只有View部分的WebMatrix网站,那么您仍然应该定义一个视图模型,并让razor页面部分后面的代码将域模型映射到视图模型,然后由razor模板的视图部分进行操作。