c# - MVC模式: best way to display an array of elements

标签 c# java model-view-controller frameworks

假设我在 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,它很吵:)

有什么解决办法吗?

P.s.我在那里谈论 C#,但在 Java ecc 上应该是相同的

最佳答案

只需输入 <div>循环内

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

更新 好的,从您的评论来看,您似乎不希望 View 中出现任何循环逻辑。真的你不应该担心这个。 View 中有这样的东西。它可能看起来有点困惑,但它通常是正确的做事方式。将 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();
}

您可以在 View 中使用它,例如...

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

这要整洁得多。

关于c# - MVC模式: best way to display an array of elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360208/

相关文章:

java - PowerScript "CHOOSE CASE"是否有 Java 等效项?

java - JRadioButton 及其上的操作

ruby-on-rails - 如何在 RoR 中实现通知系统?

c# - ASP.NET MVC如何从应用程序中删除ViewState?

c# - Array 中会发生装箱和拆箱吗?

c# - 如何实现一个非随机的随机数生成器?

java - 从类方法内访问类属性 - Java

c# - 除非特别触发,否则 XUnit 会忽略测试

java - 保存类别时如何设置父类别?

swift - Model View Controller 中 TableView 的最佳实现