遍历数组换行

张怒天 2016-08-14 11:46:42


 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评论内容

谢谢
...全文
661 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-08-14
  • 打赏
  • 举报
回复
            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
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 15 楼 From_TaiWan 的回复:
[quote=引用 5 楼 u013748058 的回复:] [quote=引用 4 楼 From_TaiWan 的回复:] 更正: <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都没办法用[/quote]明白了,估计你第一段代码是在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) 一句完事 [/quote] 哥,你厉害 谢谢您问题解决了 我弄了好久都没有解决 也谢谢上面大神的帮助
秋的红果实 2016-08-14
  • 打赏
  • 举报
回复
但更一般的做法是在controler将所有数据(ViewBag.md和ViewBag.name)封装进一个Model,传给view并渲染视图,也就是用html的格式将内容呈现给用户,这个工作在客户端做,以减轻controller的负荷
秋的红果实 2016-08-14
  • 打赏
  • 举报
回复
引用 5 楼 u013748058 的回复:
[quote=引用 4 楼 From_TaiWan 的回复:] 更正: <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都没办法用[/quote]明白了,估计你第一段代码是在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) 一句完事
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 13 楼 xuzuning 的回复:
加个 x.ToString() + v.ToString() 也不行么?
加上ToString()后可以了 把 c传给前台 前台怎么遍历呢?谢谢您
xuzuning 2016-08-14
  • 打赏
  • 举报
回复
加个 x.ToString() + v.ToString() 也不行么?
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 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”类型的操作数
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 8 楼 shingoscar 的回复:
[quote=引用 6 楼 u013748058 的回复:] [quote=引用 2 楼 shingoscar 的回复:] ViewBag.md = ViewBag.md + " <br>" + item.Msg + " <br>" ;
这样写只有一行会换行 其他的还是一样呢?[/quote] 啥叫其他还是一样的?其他是什么东西?[/quote] 只有第一行数据会换行 其他数据还是原来哪有显示 不好意思 我没有描述清楚
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 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));
我就奇怪了,相关联的两个序列,为什么要分开保存呢?
哈哈哈 现在用一个数组得怎么实现呢?我自己搞了好久都没有实现出来 麻烦你了 谢谢
xuzuning 2016-08-14
  • 打赏
  • 举报
回复
数组一样用
            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));
我就奇怪了,相关联的两个序列,为什么要分开保存呢?
Poopaye 2016-08-14
  • 打赏
  • 举报
回复
引用 6 楼 u013748058 的回复:
[quote=引用 2 楼 shingoscar 的回复:] ViewBag.md = ViewBag.md + " <br>" + item.Msg + " <br>" ;
这样写只有一行会换行 其他的还是一样呢?[/quote] 啥叫其他还是一样的?其他是什么东西?
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 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[]类型的 这个方法好像没办法用
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
ViewBag.md = ViewBag.md + " <br>" + item.Msg + " <br>" ;
这样写只有一行会换行 其他的还是一样呢?
张怒天 2016-08-14
  • 打赏
  • 举报
回复
引用 4 楼 From_TaiWan 的回复:
更正: <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都没办法用
秋的红果实 2016-08-14
  • 打赏
  • 举报
回复
更正: <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就可以了,内容都放进这里
秋的红果实 2016-08-14
  • 打赏
  • 举报
回复
如果能确保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循环显示
Poopaye 2016-08-14
  • 打赏
  • 举报
回复
ViewBag.md = ViewBag.md + " <br>" + item.Msg + " <br>" ;

110,501

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧