【问题标题】:Overview of items in Bootstrap with asp.net mvc Razor使用 asp.net mvc Razor 的 Bootstrap 中的项目概述
【发布时间】:2017-06-05 15:00:18
【问题描述】:

我正在使用引导程序并显示项目网格。我连续显示 6 个项目。

目前我在下面有这段代码,代码可以工作,但代码的味道很糟糕。

@{ int rowcnt = 0; }
@for (int i = 0; i < Model.Count; i++)
{  
    if (rowcnt % 6 == 0)
    {
        @Html.Raw("<div class=\"row\">")
    }

    <div class="col-md-2 col-xs-6 col-sm-6">
        <div class="myItemContainer">
            <!-- fancy item stuff -->
        </div>
  </div>
    rowcnt++;
    if (rowcnt % 6 == 0)
    {
        @Html.Raw("</div>")
    }
}
@*for-loop end*@
@if (rowcnt % 6 != 0)
{
    @Html.Raw("</div>")
}

有没有更好的方法来使用引导程序来执行此操作,而无需计算插入 div 的行数?

我测试只是创建 col- 元素,但有时会创建奇怪的行,其中只有一个项目。

item item item item
item
item item item item
item
item item item item
item
...

【问题讨论】:

  • 嗨,你能告诉我你最想达到的目标吗?
  • 使用引导程序创建一个网格,例如单行 6 个项目。假设我有 100 个项目,那么我想查看 17 行(16 行,每行 6 个项目,另外一行包含剩余项目)。目前它可以工作,但是我自己添加
    元素时 razor 中的代码看起来很糟糕。我想知道是否有更好/更清洁的方法。
  • 如果您只想在标记中使用原始 HTML,只需在没有 Html.Raw 帮助器的情况下编写它。这就是 Razor 的美妙之处 - 您可以混合使用 C# 和 HTML 语法。
  • 更简洁的语法 - &lt;div class"row"&gt;@for (int i = 0; i &lt; Model.Count; i++){if (i &gt; 0 &amp;&amp; i % 6 == 0){@:&lt;/div&gt;&lt;div class"row"&gt;}&lt;div class="col-md-2 col-xs-6 col-sm-6"&gt;.....&lt;/div&gt;&lt;/div&gt;
  • 所以唯一真正的“选择”就是放弃引导网格系统并使用 flex.... :-)

标签: c# asp.net asp.net-mvc twitter-bootstrap razor


【解决方案1】:

如果您真的希望每组六个包含在一个特定的行中,那么不,没有比您拥有的更好的方法了。但是,实际上不必有单独的行。例如,有这样的东西是完全有效的:

<div class="row">
    <div class="col-md-2 col-xs-6 col-sm-6">Item 1</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 2</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 3</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 4</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 5</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 6</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 7</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 8</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 9</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 10</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 11</div>
    <div class="col-md-2 col-xs-6 col-sm-6">Item 12</div>
    <!-- etc -->
</div>

每个列 div 将占用它应该占用的空间,如果它无法容纳,它将简单地换到下一行并重新开始。您可能需要另外做的唯一一件事是为列 div 添加一些自定义底部边距,因为分隔各个行的底部边距显然不再存在。

从技术上讲,无论如何,您已经在使用较小的屏幕尺寸进行此操作。在那里,只有两个项目适合“行”,但每个行 div 中仍然有六个项目。结果,剩余的 4 个项目已经在同一行 div 内的较小屏幕上换成了另外两行。

【讨论】:

  • 是的,对于我看到的较小的屏幕尺寸(我复制/粘贴的代码仍然必须删除)。但问题是剩余的物品不能很好地填满。当我只有一个“行”时,我的行只有一个项目。
  • 无论如何都是这样,不是吗?最后一列将只占用行的一部分,无论它是否只是换行到下一行,或者您将它们包裹在具有“行”类的实际 div 中。 Bootstrap 列不会根据行中是否有剩余空间自动调整。
猜你喜欢
相关资源
最近更新 更多
热门标签