Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC Razor按组显示数据_Asp.net Mvc_Functional Programming_Procedural Programming - Fatal编程技术网

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来做这个。