Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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/8/sorting/2.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# 将MVC列表分离为多个div_C#_Asp.net Mvc_Model View Controller - Fatal编程技术网

C# 将MVC列表分离为多个div

C# 将MVC列表分离为多个div,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我是个新手。只是前一个问题的后续问题:。我的问题是:如何将此列表划分为多个列表,每个列表包含5个对象,并将每个列表分隔为不同的div 列表控制器: 我使用此控制器从数据库中筛选出行: public ActionResult FilteredElements() { var elem = DB.elements.Where(a => a.Criterion == "criterion") .OrderByDescending(a => a

我是个新手。只是前一个问题的后续问题:。我的问题是:如何将此列表划分为多个列表,每个列表包含5个对象,并将每个列表分隔为不同的div

列表控制器: 我使用此控制器从数据库中筛选出行:

public ActionResult FilteredElements()
    {
        var elem = DB.elements.Where(a => a.Criterion == "criterion")
            .OrderByDescending(a => a.ElementFrequency.Count())
            .ToList();

        return View(elem);
    }
我的当前视图将同时登记所有元素:

@foreach (var elem in Model)
{
<a href="@Url.Action("Details", "Table", new{ id = elem.ElementID }, "")">
<img src="@elem.ImagePath" /></a>
}
@foreach(模型中的变量元素)
{
}

与在一个div中同时列出所有元素不同,我希望在第一个div中列出前5个元素,在第二个div中列出下5个元素,依此类推。

您必须遍历该列表,并使用linq函数
。跳过
。获取

注意:使用
.Skip(listIndex*listSize)
确保不再显示过去的值。和
.Take(列表大小)用于获取要显示的元素数量

@{
    var listSize = 5;
    var numberOfLists = Model.Count/listSize;
    for (int listIndex = 0; listIndex < numberOfLists; listIndex++)
    {
        var list = Model.Skip(listIndex * listSize).Take(listSize);

        <div id="list@listIndex">
            <p>List @listIndex </p>
            @foreach(var element in list)
            {
                 <a href="@Url.Action("Details", "Table", new{ id = element.ElementID }, "")">
                 <img src="@element.ImagePath" /></a>
            }
        </div>
    }
}
@{
var-listSize=5;
var numberOfLists=Model.Count/listSize;
对于(int-listIndex=0;listIndex
@foreach(列表中的var元素)
{
}
}
}

好的,如果你想把列表分成5组,你可以使用for循环和index,而不是foreach来迭代列表

@for (int i=0;i<=Model.Count; i+=5)
{
    <div class="group">
    for(int j=0;(j<5)&&(i+j-1)<Model.Count;j++)
    {
        <a href="@Url.Action("Details", "Table", new{ id = Model[i+j].ElementID }, "")">
        <img src="@Model[i+j].ImagePath" /></a>
    }
    </div>
}

@for(int i=0;i如果您不介意删除
div
要求,您可以通过这种方式获得更干净的剃须刀

@{ int i = 0; }
@foreach (var elem in Model)
{
    if (i++ % 5 == 0)
    {
        <h3>List @(i / 5 + 1)</h3>
    }
    <a href="@Url.Action("Details", "Table", new{ id = elem.ElementID }, "")">
    <img src="@elem.ImagePath" /></a>
}
@{int i=0;}
@foreach(模型中的var元素)
{
如果(i++%5==0)
{
列表@(i/5+1)
}
}
否则,这似乎也工作好

@{ int i = 0; }
@foreach(var elem in Model)
{
    if (i % 5 == 0)
    {
        @:<div><p>List @(i / 5 + 1)</p>
    }
    <a href="@Url.Action("Details", "Table", new{ id = elem.ElementID }, "")">
    <img src="@elem.ImagePath" /></a>
    if (++i % 5 == 0)
    {
        @:</div>
    }
}
@{int i=0;}
@foreach(模型中的var元素)
{
如果(i%5==0)
{
@:List@(i/5+1)

} 如果(++i%5==0) { @: } }
另一种答案,它在foreach中循环使用模型项的值(v)和索引(i

查看

<div class="group"> // open and closing div tags for structure and default requirement

  // add 1 to index to make correct comparison with .Count() and %
  @foreach (var elem in Model.Select((v, i) => new { i = i + 1, v }))
  {
    // display stuff
    <a href="@Url.Action("Details", "Table", new{ id = elem.v.ElementID }, "")">
        <img src="@elem.v.ImageUrl" />
    </a>

     // Check if item is multiple of 5 and not the last one in the loop
     if(elem.i % 5 == 0 && elem.i != Model.Count()) { 

       // close and open div . Top and bottom div tags keeps structure
       @:</div><div class="group"> 

    }
   }

</div>
//打开和关闭结构和默认要求的div标记
//将1添加到索引中,以便与.Count()和%
@foreach(Model.Select中的varelem((v,i)=>new{i=i+1,v}))
{
//展示物品
//检查项目是否为5的倍数,而不是循环中的最后一项
如果(elem.i%5==0&&elem.i!=Model.Count()){
//关闭和打开分区。顶部和底部分区标记保持结构
@: 
}
}

请提供一些与此相关的代码。现在,您的问题太宽泛了。仅因为此问题与您以前的问题相关,也不能免除您在该问题中添加相关代码的责任。为什么要“划分”名单?你想达到什么目的?@krillgar:添加了code@Alundrathedreamwalker:每5个元素的样式将彼此不同。因此,我认为将其分为不同的div是必要的。为什么会出现错误:“System.Collections.Generic.List”不包含“Skip”的定义。我有在我的model.framework中的“using System.Linq;”是mvc3。您正在视图顶部使用
@using System.Linq;
?如果您将i++更改为++i,使增量发生在模数之前,那么第二个示例非常有用。