遍历数组换行

时间:2022-09-03 13:41:41


 foreach (var item in list)
            {

                ViewBag.md = ViewBag.md + " <br>" + item.Msg;
            }
            foreach (var itemname in name)
            {

                ViewBag.name = ViewBag.name + "<br>" + itemname.UserId;
            }


               <div class="replay">
                    <a href="#" class="userlogin">@Html.Raw( @HttpUtility.HtmlDecode(ViewBag.name))</a>
                    <span class="body">
                    @Html.Raw( @HttpUtility.HtmlDecode(ViewBag.md))
                    </span>  
                </div>


显示结果为:
2
2
2
评论内容
评论内容
评论内容

怎么显示为:
2评论内容
2评论内容
2评论内容

谢谢

17 个解决方案

#1


            var a = new List<int>() { 1, 2, 3 };
            var b = new List<string>() { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y).ToList();
            Console.WriteLine(string.Join("\n", c));
1评论a
2评论b
3评论c

#2


ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;

#3


如果能确保name和list里面元素能一一对应,可以这样

@for(int i=0;i<name.Count;i++)
{
    <div class="replay">
                    <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                    <span class="body">
                         @Html.Raw(list[I].Msg)
                     </span>
                    <br />
     </div>
}

还可以将list和name封装在一个类中,将类传到view再处理,像这样:ViewBag.Model=封装对象,view取ViewBag.Model循环显示

#4


更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里

#5


引用 4 楼 From_* 的回复:
更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里



没办法遍历 Count和length都没办法用

#6


引用 2 楼 shingoscar 的回复:
ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;


这样写只有一行会换行 其他的还是一样呢?

#7


引用 1 楼 xuzuning 的回复:
            var a = new List<int>() { 1, 2, 3 };
            var b = new List<string>() { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y).ToList();
            Console.WriteLine(string.Join("\n", c));
1评论a
2评论b
3评论c


两个数组都是  Model.T_MessageComments[]类型的 这个方法好像没办法用

#8


引用 6 楼 u013748058 的回复:
Quote: 引用 2 楼 shingoscar 的回复:

ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;


这样写只有一行会换行 其他的还是一样呢?

啥叫其他还是一样的?其他是什么东西?

#9


数组一样用
            var a = new int[] { 1, 2, 3 };
            var b = new string[] { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y);//.ToList();
            Console.WriteLine(string.Join("\n", c));


我就奇怪了,相关联的两个序列,为什么要分开保存呢?

#10


引用 9 楼 xuzuning 的回复:
数组一样用
            var a = new int[] { 1, 2, 3 };
            var b = new string[] { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y);//.ToList();
            Console.WriteLine(string.Join("\n", c));


我就奇怪了,相关联的两个序列,为什么要分开保存呢?


哈哈哈 现在用一个数组得怎么实现呢?我自己搞了好久都没有实现出来 麻烦你了 谢谢

#11


引用 8 楼 shingoscar 的回复:
Quote: 引用 6 楼 u013748058 的回复:

Quote: 引用 2 楼 shingoscar 的回复:

ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;


这样写只有一行会换行 其他的还是一样呢?

啥叫其他还是一样的?其他是什么东西?


只有第一行数据会换行 其他数据还是原来哪有显示 不好意思 我没有描述清楚

#12


引用 9 楼 xuzuning 的回复:
数组一样用
            var a = new int[] { 1, 2, 3 };
            var b = new string[] { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y);//.ToList();
            Console.WriteLine(string.Join("\n", c));


我就奇怪了,相关联的两个序列,为什么要分开保存呢?


错误 1 运算符“+”无法应用于“Model.T_MessageComments”和“Model.T_MessageComments”类型的操作数

#13


加个 x.ToString() + v.ToString() 也不行么?

#14


引用 13 楼 xuzuning 的回复:
加个 x.ToString() + v.ToString() 也不行么?


加上ToString()后可以了  把 c传给前台 前台怎么遍历呢?谢谢您

#15


引用 5 楼 u013748058 的回复:
Quote: 引用 4 楼 From_* 的回复:

更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里



没办法遍历 Count和length都没办法用
明白了,估计你第一段代码是在controler后台执行的啊!那你这样

在后台controller里:

string Result=""; //内容多用StringBuilder
for(int i=0;i<name.Count;i++)
  {
                 Result+=" <a href='#' class='userlogin'>"+name[i].UserID+"</a>";
                 Result+=" <span class='body'>"+list[i].Msg+" </span>";
                  Result+=" <br />";
  }

ViewBag.Result=Result;



在前台view里面,在需要出现内容的地方
@Html.Raw(ViewBag.Result)
一句完事

#16


但更一般的做法是在controler将所有数据(ViewBag.md和ViewBag.name)封装进一个Model,传给view并渲染视图,也就是用html的格式将内容呈现给用户,这个工作在客户端做,以减轻controller的负荷

#17


引用 15 楼 From_* 的回复:
Quote: 引用 5 楼 u013748058 的回复:

Quote: 引用 4 楼 From_* 的回复:

更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里



没办法遍历 Count和length都没办法用
明白了,估计你第一段代码是在controler后台执行的啊!那你这样

在后台controller里:

string Result=""; //内容多用StringBuilder
for(int i=0;i<name.Count;i++)
  {
                 Result+=" <a href='#' class='userlogin'>"+name[i].UserID+"</a>";
                 Result+=" <span class='body'>"+list[i].Msg+" </span>";
                  Result+=" <br />";
  }

ViewBag.Result=Result;



在前台view里面,在需要出现内容的地方
@Html.Raw(ViewBag.Result)
一句完事


哥,你厉害 遍历数组换行  谢谢您问题解决了 我弄了好久都没有解决 也谢谢上面大神的帮助

#1


            var a = new List<int>() { 1, 2, 3 };
            var b = new List<string>() { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y).ToList();
            Console.WriteLine(string.Join("\n", c));
1评论a
2评论b
3评论c

#2


ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;

#3


如果能确保name和list里面元素能一一对应,可以这样

@for(int i=0;i<name.Count;i++)
{
    <div class="replay">
                    <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                    <span class="body">
                         @Html.Raw(list[I].Msg)
                     </span>
                    <br />
     </div>
}

还可以将list和name封装在一个类中,将类传到view再处理,像这样:ViewBag.Model=封装对象,view取ViewBag.Model循环显示

#4


更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里

#5


引用 4 楼 From_* 的回复:
更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里



没办法遍历 Count和length都没办法用

#6


引用 2 楼 shingoscar 的回复:
ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;


这样写只有一行会换行 其他的还是一样呢?

#7


引用 1 楼 xuzuning 的回复:
            var a = new List<int>() { 1, 2, 3 };
            var b = new List<string>() { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y).ToList();
            Console.WriteLine(string.Join("\n", c));
1评论a
2评论b
3评论c


两个数组都是  Model.T_MessageComments[]类型的 这个方法好像没办法用

#8


引用 6 楼 u013748058 的回复:
Quote: 引用 2 楼 shingoscar 的回复:

ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;


这样写只有一行会换行 其他的还是一样呢?

啥叫其他还是一样的?其他是什么东西?

#9


数组一样用
            var a = new int[] { 1, 2, 3 };
            var b = new string[] { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y);//.ToList();
            Console.WriteLine(string.Join("\n", c));


我就奇怪了,相关联的两个序列,为什么要分开保存呢?

#10


引用 9 楼 xuzuning 的回复:
数组一样用
            var a = new int[] { 1, 2, 3 };
            var b = new string[] { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y);//.ToList();
            Console.WriteLine(string.Join("\n", c));


我就奇怪了,相关联的两个序列,为什么要分开保存呢?


哈哈哈 现在用一个数组得怎么实现呢?我自己搞了好久都没有实现出来 麻烦你了 谢谢

#11


引用 8 楼 shingoscar 的回复:
Quote: 引用 6 楼 u013748058 的回复:

Quote: 引用 2 楼 shingoscar 的回复:

ViewBag.md = ViewBag.md  + " <br>" + item.Msg  + " <br>" ;


这样写只有一行会换行 其他的还是一样呢?

啥叫其他还是一样的?其他是什么东西?


只有第一行数据会换行 其他数据还是原来哪有显示 不好意思 我没有描述清楚

#12


引用 9 楼 xuzuning 的回复:
数组一样用
            var a = new int[] { 1, 2, 3 };
            var b = new string[] { "评论a", "评论b", "评论c" };
            var c = a.Zip(b, (x, y) => x + y);//.ToList();
            Console.WriteLine(string.Join("\n", c));


我就奇怪了,相关联的两个序列,为什么要分开保存呢?


错误 1 运算符“+”无法应用于“Model.T_MessageComments”和“Model.T_MessageComments”类型的操作数

#13


加个 x.ToString() + v.ToString() 也不行么?

#14


引用 13 楼 xuzuning 的回复:
加个 x.ToString() + v.ToString() 也不行么?


加上ToString()后可以了  把 c传给前台 前台怎么遍历呢?谢谢您

#15


引用 5 楼 u013748058 的回复:
Quote: 引用 4 楼 From_* 的回复:

更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里



没办法遍历 Count和length都没办法用
明白了,估计你第一段代码是在controler后台执行的啊!那你这样

在后台controller里:

string Result=""; //内容多用StringBuilder
for(int i=0;i<name.Count;i++)
  {
                 Result+=" <a href='#' class='userlogin'>"+name[i].UserID+"</a>";
                 Result+=" <span class='body'>"+list[i].Msg+" </span>";
                  Result+=" <br />";
  }

ViewBag.Result=Result;



在前台view里面,在需要出现内容的地方
@Html.Raw(ViewBag.Result)
一句完事

#16


但更一般的做法是在controler将所有数据(ViewBag.md和ViewBag.name)封装进一个Model,传给view并渲染视图,也就是用html的格式将内容呈现给用户,这个工作在客户端做,以减轻controller的负荷

#17


引用 15 楼 From_* 的回复:
Quote: 引用 5 楼 u013748058 的回复:

Quote: 引用 4 楼 From_* 的回复:

更正:
<div class="replay">

@for(int i=0;i<name.Count;i++)
 {
                     <a href="#" class="userlogin">@Html.Raw(name[i].UserID)</a>
                     <span class="body">
                          @Html.Raw(list[I].Msg)
                      </span>
                     <br />
      
 }

</div>

用一个div就可以了,内容都放进这里



没办法遍历 Count和length都没办法用
明白了,估计你第一段代码是在controler后台执行的啊!那你这样

在后台controller里:

string Result=""; //内容多用StringBuilder
for(int i=0;i<name.Count;i++)
  {
                 Result+=" <a href='#' class='userlogin'>"+name[i].UserID+"</a>";
                 Result+=" <span class='body'>"+list[i].Msg+" </span>";
                  Result+=" <br />";
  }

ViewBag.Result=Result;



在前台view里面,在需要出现内容的地方
@Html.Raw(ViewBag.Result)
一句完事


哥,你厉害 遍历数组换行  谢谢您问题解决了 我弄了好久都没有解决 也谢谢上面大神的帮助