MVC模式:显示元素数组的最佳方式

本文关键字:最佳 方式 数组 元素 模式 显示 MVC | 更新日期: 2023-09-27 17:59:09

假设我在view部分上有这个div:

<div class='my class'>
    <%=myVariableToPrint %>
</div>

这里没有问题:我只是从我的类/bean(model)中获取我的数据,并将其放在div上

现在,假设myVariableToPrint是一个由10个字符串组成的数组,我需要打印div 10次,每个div对应数组上的每个字符串。我该怎么做?

将div放在模型上,如:

myString+="<div class='my class'>"+myVariable[i]+"</div>" 

并在view部分打印myString——它有噪声:)

有什么解决方案吗?

附言:我说的是C#,但在Java ecc 上应该是一样的

MVC模式:显示元素数组的最佳方式

只需将<div>放入循环中

<% foreach (var item in myArray) { %>
    <div class='my class'>
        <%= item %>
    </div>
<% } %> 

更新好吧,从你的评论来看,你似乎不希望在你的视图中有任何循环逻辑。真的你不应该担心。视图中有这种东西。它可能看起来有点乱,但这通常是正确的做事方式。将html放在模型中以便进行渲染是一个非常糟糕的想法。请不要那样做。

另一种方法是使用自定义Html.Helper方法。你可以做一些类似…的事情。。。。

public static string DivList(this HtmlHelper helper, IList<string> list, string divClass)
{
    var sb = new StringBuilder();
    foreach(string item in list)
    {
        sb.AppendFormat("<div class='"{0}'">{1}</div>", divClass, item); 
    }     
    return sb.ToString();
}

你可以在视图中使用这个,比如。。。

<%= Html.DivList(Model.MyList, "myClass") %>

这要整洁得多。

您应该使用foreach循环来迭代集合,并将HTML放入循环中。

使用Razor(因为它更容易):

@foreach(string s in something {
    <div class="Something">@s</div>
}

将集合放入模型中。

视图在集合上迭代以创建最终输出。