【发布时间】:2018-02-16 19:43:51
【问题描述】:
我有以下代码,无论我尝试了什么,我都无法让它只返回一次数据。
<div class="container">
@for (int i = 0; i < Model.First().NumberOfRows; i++)
{
<div class="row">
@foreach (var columns in Model)
{
<div class="@columns.BootstrapColumns">
@columns.BodyText
</div>
}
</div>
}
</div>
我尝试在代码中放置一个计数器,移动代码在网上阅读帖子,但没有任何效果。
我是否遗漏了一些简单的东西,for 循环工作正常,但 foreach 导致了问题。
将 foreach 移到 for 循环之外,它可以正常工作,但我需要它在 for 循环内。
<div class="container">
<div class="row">
<div class="col-md-3">
<p>column 1</p>
</div>
<div class="col-md-3">
<p>column 2</p>
</div>
<div class="col-md-3">
<p>column 3</p>
</div>
<div class="col-md-3">
<p>column 4</p>
</div>
<div class="col-md-4">
<p>Row 2 column 1</p>
</div>
<div class="col-md-4">
<p>Row 2 Column 2</p>
</div>
<div class="col-md-4">
<p>Row 2 Column 3</p>
</div>
<div class="col-md-12">
<p>Rows 3 column 1</p>
</div>
</div>
<div class="row">
<div class="col-md-3">
<p>column 1</p>
</div>
<div class="col-md-3">
<p>column 2</p>
</div>
<div class="col-md-3">
<p>column 3</p>
</div>
<div class="col-md-3">
<p>column 4</p>
</div>
<div class="col-md-4">
<p>Row 2 column 1</p>
</div>
<div class="col-md-4">
<p>Row 2 Column 2</p>
</div>
<div class="col-md-4">
<p>Row 2 Column 3</p>
</div>
<div class="col-md-12">
<p>Rows 3 column 1</p>
</div>
</div>
<div class="row">
<div class="col-md-3">
<p>column 1</p>
</div>
<div class="col-md-3">
<p>column 2</p>
</div>
<div class="col-md-3">
<p>column 3</p>
</div>
<div class="col-md-3">
<p>column 4</p>
</div>
<div class="col-md-4">
<p>Row 2 column 1</p>
</div>
<div class="col-md-4">
<p>Row 2 Column 2</p>
</div>
<div class="col-md-4">
<p>Row 2 Column 3</p>
</div>
<div class="col-md-12">
<p>Rows 3 column 1</p>
</div>
</div>
Camilo Terevinto 如果我这样做,我会得到以下结果,这不是我所追求的
<div class="container">
<div class="row">
<div class="col-md-3">
<p>column 1</p>
</div>
</div>
<div class="row">
<div class="col-md-3">
<p>column 2</p>
</div>
</div>
<div class="row">
<div class="col-md-3">
<p>column 3</p>
</div>
</div>
<div class="row">
<div class="col-md-3">
<p>column 4</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p>Row 2 column 1</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p>Row 2 Column 2</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p>Row 2 Column 3</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
<p>Rows 3 column 1</p>
</div>
</div>
</div>
嗨 user7396598 我正在尝试让代码显示以下内容:
<div class="row">
<div class="col-md-4">row 1 col1</div>
<div class="col-md-4">row 1 col2</div>
<div class="col-md-4">row 1 col3</div>
</div>
<div class="row">
<div class="col-md-3">row 2 col1</div>
<div class="col-md-3">row 2 col2</div>
<div class="col-md-3">row 2 col3</div>
<div class="col-md-3">row 2 col4</div>
</div>
<div class="row">
<div class="col-md-12">row 3 col1</div>
</div>
我的 for 循环获取行数,然后 foreach 循环应该获取列并显示在行中的列中。
如果不首先使用 for 循环获取行数,我看不到任何其他方法。
=======================查看模型====================
public class NestedContentViewModel
{
public NestedContentViewModel() { }
public NestedContentViewModel(int numberOfRows, HtmlString bodyText, string image, string imageAlternativeText,string rowBackgroundColour, string bootstrapColumns, int numberOfColumns)
{
NumberOfRows = numberOfRows;
BodyText = bodyText;
Image = image;
ImageAlternativeText = imageAlternativeText;
RowBackgroundColour = rowBackgroundColour;
BootstrapColumns = bootstrapColumns;
NumberOfColumns = numberOfColumns;
}
public int NumberOfRows { get; set; }
public int NumberOfColumns { get; set; }
public string BootstrapColumns { get; set; }
public HtmlString BodyText { get; set; }
public string Image { get; set; }
public string ImageAlternativeText { get; set; }
public string RowBackgroundColour { get; set; }
}
==================控制器================
foreach (var rows in nestedContentRows)
{
int numberOfBootstrapColumns = rows.GetPropertyValue<IEnumerable<IPublishedContent>>("columns").Count();
string bootstrapColumn = "";
switch (numberOfBootstrapColumns)
{
case 1:
bootstrapColumn = "col-md-12";
break;
case 2:
bootstrapColumn = "col-md-6";
break;
case 3:
bootstrapColumn = "col-md-4";
break;
case 4:
bootstrapColumn = "col-md-3";
break;
default:
bootstrapColumn = "col-md-12";
break;
}
foreach (var columns in rows.GetPropertyValue<IEnumerable<IPublishedContent>>("columns"))
{
HtmlString bodyText = columns.HasValue("bodyText")? columns.GetPropertyValue<HtmlString>("bodyText"): new HtmlString(string.Empty);
model.Add(new NestedContentViewModel(numberOfRows: countNumberOfRows,bodyText: bodyText, image: null, imageAlternativeText: null,rowBackgroundColour: "cssTurquoiseBlue", bootstrapColumns: bootstrapColumn, numberOfColumns: numberOfBootstrapColumns));
}
}
【问题讨论】:
-
您在每次迭代中循环整个模型,除了重复之外,您期望发生什么?完全删除
@for -
@Camilo Terevinto 我已根据您的建议更新了代码,但它不起作用,我已经尝试过了。
-
您的模型由什么组成?期望的输出是什么?
-
@user7396598 我已经回答了你的问题
-
请发布视图模型。我认为您正在循环错误的对象。
标签: c# asp.net-mvc razor