Asp.net 用于从单个循环渲染多个位置的Razor语法

Asp.net 用于从单个循环渲染多个位置的Razor语法,asp.net,asp.net-mvc,loops,razor,foreach,Asp.net,Asp.net Mvc,Loops,Razor,Foreach,是否有任何方法可以从视图中的单个循环中渲染单独的部分?我有两个div,它们都需要来自同一个循环的内容,但在页面的不同部分。如果需要,我不想循环两次。例如: <div id="content1"> @foreach (Item item in Model) { <div>@item.ItemName</div> } </div> <div id="content2"> @foreach (Item item in Model) {

是否有任何方法可以从视图中的单个循环中渲染单独的部分?我有两个div,它们都需要来自同一个循环的内容,但在页面的不同部分。如果需要,我不想循环两次。例如:

<div id="content1">
@foreach (Item item in Model)
{
   <div>@item.ItemName</div>
}
</div>

<div id="content2">
@foreach (Item item in Model)
{
   <div>@item.ItemDescription</div>
}
</div>

@foreach(模型中的项目)
{
@item.ItemName
}
@foreach(模型中的项目)
{
@item.ItemDescription
}
我能想到的唯一方法是构建一个内容字符串,并用Html将其输出。原始:

<div id="content1">
@{
   StringBuilder html = new StringBuilder();
   foreach(Item item in Model)
   {
      <div>@item.ItemName</div>

      html.AppendFormat("<div>{0}</div>", item.ItemDescription);
   }
</div>

<div id="content2">
    @Html.Raw(html.ToString())
</div>
}

@{
StringBuilder html=新的StringBuilder();
foreach(模型中的项目)
{
@item.ItemName
AppendFormat(“{0}”,item.itemsdescription);
}
@Html.Raw(Html.ToString())
}
只是想知道是否有更好的方法?


<div id="content1">
@foreach (Item item in Model)
{
   <div>@item.ItemName</div>
   <div class='content2'>@item.ItemDescription</div>
}
</div>

<div id="content2">
</div>

<script>
    $(document).ready(function(){
        $(".content2").detach().appendTo("#content2");
    });
</script>
@foreach(模型中的项目) { @item.ItemName @item.ItemDescription } $(文档).ready(函数(){ $(“.content2”).detach().appendTo(“#content2”); });
这有什么问题吗?有两个部分,所以有两个循环是有意义的。@DLeh Basic performance no?性能差异将非常小,因此不值得尝试一些聪明的方法来重用单个循环。无论您创建的代码执行速度快0.1ms,并且对未来关注itI的编码人员来说会更加混乱。您是否找到了解决方案?这会从
.content2
中删除内容并附加到
#content2
?或者内容仍然存在
.content2
?这将把所有具有content2类的div移动到id为content2的div