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 上应该是一样的
只需将<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>
}
将集合放入模型中。
视图在集合上迭代以创建最终输出。