Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
C# 在Razor中循环浏览模型内容_C#_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 在Razor中循环浏览模型内容

C# 在Razor中循环浏览模型内容,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我想在razor视图中循环浏览模型中的每个项目,但我想将所有项目分组在一起。然后我想在每组之间循环。假设我有一张桌子: ID GroupNo GroupName 1 1 Group1 2 1 Group2 3 1 Group3 4 2 Group1 5 2 Group2 6 3 Group56 我想做一些类似的事情: @foreach (va

我想在razor视图中循环浏览模型中的每个项目,但我想将所有项目分组在一起。然后我想在每组之间循环。假设我有一张桌子:

ID   GroupNo    GroupName
1    1          Group1
2    1          Group2
3    1          Group3
4    2          Group1
5    2          Group2
6    3          Group56
我想做一些类似的事情:

@foreach (var group in Model.GroupNo) {
    <section>
        <header>Group No is @group.GroupNo</header>
        @foreach (var item in group) {
            <p>GroupName: @item.GroupName</p>
        }
    </section>
} 
这可能吗


谢谢

是的,使用Linq
GroupBy
很容易做到这一点。我建议将视图更改为使用
@model IEnumerable
,您可以这样填充:

var groupModel = MyModelCollection.GroupBy(item => item.GroupNo).ToArray();
return View(groupModel);
然后,只需在编写时遍历组,除了使用
group.Key
而不是
group.GroupNo
检索iGroup的键外:

@foreach (var group in Model) {
    <section>
        <header>Group No is @group.Key</header>
        @foreach (var item in group) {
            <p>GroupName: @item.GroupName</p>
        }
    </section>
} 
@foreach(模型中的变量组){
组号为@Group.Key
@foreach(组中的var项目){
GroupName:@item.GroupName

} }
LINQ可以帮助您做到这一点

@model IEnumerable<Project1.Models.Group>


@foreach (var item in Model.Select(i=>i.groupno).Distinct().ToList()) {
    <tr>
        <td>
            <header>Group No is @item</header>
            @foreach (var grpName in Model.Where(i => i.groupno == item).ToList())
            {
                <p>GroupName: @grpName.groupName</p>
            }
        </td>
    </tr>
}
@model IEnumerable
@foreach(Model.Select(i=>i.groupno.Distinct().ToList()中的var项){
组号为@item
@foreach(Model.Where(i=>i.groupno==item.ToList()中的var grpName)
{
GroupName:@grpName.GroupName

} }
@{
布局=空;
}
指数
@{
String[]name={“Prashant”、“Rishabh”、“Zaheer”、“Pratima”、“Rahul”};
int i=1;

虽然(我曾经尝试过提供与Razor代码(乍一看是有效的)期望相匹配的模型数据结构?GroupNo绝对不是IEnumerable,对吧?我在问,因为你正在做一个foreach,它工作得非常完美!!:)非常感谢这太棒了,但如何将其传递回控制器?此逻辑为我节省了大量时间..谢谢!如果您需要将分组代码完全保留在您的视图中,这是一个很好的方法。
@model IEnumerable<Project1.Models.Group>


@foreach (var item in Model.Select(i=>i.groupno).Distinct().ToList()) {
    <tr>
        <td>
            <header>Group No is @item</header>
            @foreach (var grpName in Model.Where(i => i.groupno == item).ToList())
            {
                <p>GroupName: @grpName.groupName</p>
            }
        </td>
    </tr>
}
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>

        @{
            String[] name = {"Prashant", "Rishabh", "Zaheer", "Pratima", "Rahul"};
            int i = 1;
            while (i <= 5)
            {
                foreach(var x in name)
                {
                       <p>@i.  @x</p>
                       i++;
                };
                break;
            }
        }
    </div>
</body>
</html>

O/p-
1. Prashant

2. Rishabh

3. Zaheer

4. Pratima

5. Rahul