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

C# MVC模式:显示元素数组的最佳方式,c#,java,model-view-controller,frameworks,C#,Java,Model View Controller,Frameworks,假设我在视图部分有这个div: <div class='my class'> <%=myVariableToPrint %> </div> 然后在视图部分打印myString,这太吵了:) 有什么解决办法吗 另外,我在这里谈论的是C,但在Java ecc上应该是相同的,将集合放入模型中 视图迭代集合以创建最终输出。您应该使用foreach循环迭代集合,并将HTML放入循环中 使用剃须刀(因为它更容易): @foreach(字符串s在某物中){ @ }

假设我在
视图
部分有这个div:

<div class='my class'>
    <%=myVariableToPrint %>
</div>
然后在
视图
部分打印
myString
,这太吵了:)

有什么解决办法吗


另外,我在这里谈论的是C,但在Java ecc上应该是相同的,将集合放入模型中


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

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

使用剃须刀(因为它更容易):

@foreach(字符串s在某物中){
@
}
只需将
放入循环中即可

<% foreach (var item in myArray) { %>
    <div class='my class'>
        <%= item %>
    </div>
<% } %> 
你可以在视图中使用它,比如

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


这要简洁得多。

你能给我举个例子吗?我不会在模型中添加任何HTML。假设你有一个不同的视图,它依赖于相同的数据?HTML可能会不同。打印数组只是视图逻辑,所以这没什么错。我更新了答案,以显示另一个解决方案为什么?谁说他正在渲染用户Input?不管怎样,我只是用他最初的代码片段给出了答案。这是一个关于如何在视图中执行循环的问题,而不是如何对用户输入进行编码。是的,但是视图上有许多模型元素(对于每个,if,ecc)不是很好:)@SLaks♦ : 为什么是XSS洞?@mark:因为它没有逃过。如果字符串中有
,该怎么办?我的问题不是这个意思。当然字符串必须转义:)我希望视图部分中只有html元素(和模型中的变量)……这就是我打开这个问题的原因:)这是非常错误的。模型不应包含任何视图逻辑,如HTML。
<% foreach (var item in myArray) { %>
    <div class='my class'>
        <%= item %>
    </div>
<% } %> 
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") %>