0

在分组显示数据时,我一直在使用过程编程,我确信一定有更好的方法。你的意见?

//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>
    }
}
4

1 回答 1

2

在分组显示数据时,我一直在使用过程编程,我确信一定有更好的方法

当然,还有更好的方法。由于您的问题被标记为mvc,因此您应该使用视图模型并在控制器中执行所有此类分组以填充将传递给视图的视图模型。Razor 视图应该尽可能地笨拙——它只会显示来自视图模型的信息。在 Razor 视图中使用 DataSet 和 DataRows 绝对是解决此问题的错误方法。您的视图将类似于一些可怕的意大利面条代码。

因此,请考虑您希望如何在视图上呈现信息。基于这种想法,您将能够提出一个反映这种结构的视图模型。然后,您在控制器操作中所要做的就是将您的域模型(在您的情况下为数据集)映射到将传递给视图的相应视图模型。

如果这不是一个 ASP.NET MVC 应用程序,而是一个只有 View 部分的 WebMatrix 站点,您仍然应该定义一个视图模型,并让剃须刀页面的代码隐藏部分将域模型映射到视图模型然后将由 Razor 模板的视图部分操作。

于 2012-04-06T11:12:38.763 回答