首页新闻找找看学习计划

mvc中前台遍历viewbag,循环的结果每一项用逗号隔开怎么实现

0
悬赏园豆:5 [已解决问题] 解决于 2015-08-13 09:24

问题如题。

代码如下:

data: [@foreach (var item in ViewBag.dataBuySum)
                         {
                             @(item.BuySum)
                         }]

结果如下:

data: [167167121215170182192142219156185158133190]

事实上想要的是类似于这个的结果:
   

//data: [49.9, 71.5, 106.4, 129.2, 144.0,

// 176.0, 135.6, 148.5, 216.4, 194.1,

// 95.6, 54.4, 49.9, 71.5, 106.4,

// 129.2, 144.0, 176.0, 135.6, 148.5,

// 216.4, 194.1, 95.6, 54.4, 54.4,

// 216.4, 194.1, 95.6, 54.4, 54.4,

// 54.4
//]

 

数据来源是我从数据库查询出的某个集合,取某列int值,挂到data上~~,就是这里不知道怎么加一个逗号了。

 

问题补充:

补充一下我的问题,其实我就是想用Highcharts这个插件做图表,需要动态绑定数据,网上有说用ajax的,有说直接通过viewbag绑定的,但是数据格式都有点问题,也没个详细的说法,Highcharts官网的论坛7月28的样子就封闭了,说是什么恶意注册乱七八糟的。以前也没用这个插件,最近开始弄这个东西的

默卿的主页 默卿 | 老鸟四级 | 园豆:4071
提问于:2015-08-10 14:23
< >
分享
最佳答案
1

你看看这个可以吗

 

代码:

 1 @{
 2     List<int> list = new List<int>() { 123, 111, 222, 1324, 242, 1425, 1345 };
 3     var str = "";
 4     if (list != null && list.Count > 0)
 5     {
 6         foreach (var item in list)
 7         {
 8             str += @item + ",";
 9         };
10         str = str.Substring(0, str.Length - 1);
11     }
12     str = string.Concat('[', str, ']');
13 }
14 @str
收获园豆:5
seayxu | 大侠五级 |园豆:5468 | 2015-08-12 10:27

3Q,太感谢你了,最终得到了我想要的数据格式:

[167, 167, 121, 215, 170, 182, 192, 142, 219, 156, 185, 158, 133, 190]

这种做法行得通!

默卿 | 园豆:4071 (老鸟四级) | 2015-08-12 11:39
其他回答(7)
0

data: [@foreach (var item in ViewBag.dataBuySum) { @(item.BuySum), }]直接加个,就OK

稳稳的河 | 园豆:4183 (老鸟四级) | 2015-08-10 14:41

你这样代码不报错,编译后报错,黄页,“编译器错误消息: CS0839: 缺少参数”

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 14:59

@Sakura丶紫嫣: 我写快了,也没去验证,不过“,”是在外面的,但我想我这样也会错的,我认为你是把值付到HTML的标签里面的,如

@foreach (var item in Model)
{
<span>@(item.Style),</span>
}

但你的data的值是用来干什么的?你是想知道用@(item.Style)加“,”的语法?

支持(0) 反对(0) 稳稳的河 | 园豆:4183 (老鸟四级) | 2015-08-10 15:27

@稳稳的河: 图表的数据源,不能当html标签使用,格式得是这样de :

//data: [49.9, 71.5, 106.4, 129.2, 144.0,

// 176.0, 135.6, 148.5, 216.4, 194.1,

// 95.6, 54.4, 49.9, 71.5, 106.4,

// 129.2, 144.0, 176.0, 135.6, 148.5,

// 216.4, 194.1, 95.6, 54.4, 54.4,

// 216.4, 194.1, 95.6, 54.4, 54.4,

// 54.4
//]

 

前台页面应该是不好好的,我还是去后台试试

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 16:21

@Sakura丶紫嫣: 后台直接一个遍历就OK了

支持(0) 反对(0) 稳稳的河 | 园豆:4183 (老鸟四级) | 2015-08-10 16:31
0

或者试试:

@foreach (var item in ViewBag.dataBuySum) { @(item.BuySum)+“,” }

庸斋杂记 | 园豆:575 (小虾三级) | 2015-08-10 14:54

行不通,我试了的

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 15:01

@Sakura丶紫嫣: 你取的是 int 的值,怎么会有小数点呢?

支持(0) 反对(0) 庸斋杂记 | 园豆:575 (小虾三级) | 2015-08-11 16:23

@Sakura丶紫嫣: 

<div>

data:[@foreach (int result in ViewBag.Result.Data)
{
<span>@result,</span>
}]
</div>
<div>
<table>
@foreach (int result in ViewBag.Result.Data)
{
<tr>
<td>
@result,
</td>
</tr>
}
</table>
</div>

支持(0) 反对(0) 庸斋杂记 | 园豆:575 (小虾三级) | 2015-08-11 16:42

@Sakura丶紫嫣: 

 

 

不好意思,忘了 你说不能用 html,现在这个 通过而了。

支持(0) 反对(0) 庸斋杂记 | 园豆:575 (小虾三级) | 2015-08-11 17:35
0

这种情况你直接在代码里string.join一下不好吗?直接输出一个字符串到页面上了

上面的两个答案都会有前后多出一个逗号的问题

吴瑞祥 | 园豆:28729 (高人七级) | 2015-08-10 14:56

需求是这样的,我从数据库里面查询出一张表,取A列(int类型的),如题需要一个int数组,后台处理有点复杂就试了试这种偏方法,没试出来,上面两个答案仔细一想是会多一个逗号。用的是mvc,return的是list泛型,想取一个一个的int值,转换类型转不了

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 15:19

@Sakura丶紫嫣: 谁告诉你后台处理会复杂的..其实这个不管放在前台后台都是一句话的事儿,只是前台你是弱类型所以会麻烦很多,直接在后台转了就得了.

ViewBag.dataBuySum=string.join(",",ViewBag.dataBuySum)

前台直接@ViewBag.dataBuySum,其实你这种需求直接json序列化更好.在控制器直接拼装对象,view上直接输出obj.tojson()

支持(0) 反对(0) 吴瑞祥 | 园豆:28729 (高人七级) | 2015-08-10 15:27

他应该问的是@的语法

支持(0) 反对(0) 稳稳的河 | 园豆:4183 (老鸟四级) | 2015-08-10 15:32

@吴瑞祥: 大神,对的,我就是那个弱类型转换不过来.....我再试试你的这种方法

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 16:20

@稳稳的河: 嗯,是的,问的是@语法,不过这样没弄出来,我去后台按他给我方法试试

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 16:22

@吴瑞祥: 后台编译不通过

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-11 14:02

@Sakura丶紫嫣: 你知道我想说什么的。。。。。。对吧

支持(0) 反对(0) 吴瑞祥 | 园豆:28729 (高人七级) | 2015-08-11 14:27

@吴瑞祥: 嗯,F12看了看string的属性,大小写错了(是Join),现在调试代码,能用这个东西,但是仍黄页,不说了都是泪

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-11 14:32
0

......露个脸

at小怪兽 | 园豆:760 (小虾三级) | 2015-08-10 15:40

已看到.......

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 16:23
0

data: [@foreach (var item in ViewBag.dataBuySum)

{

   @(item.BuySum)<span>,</span>

}]

如此低调的男人 | 园豆:840 (小虾三级) | 2015-08-10 15:44

不能加html,详细见上文

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-10 16:24

@Sakura丶紫嫣: 哦 好吧,那可不可以在外面实例一个string? 然后在循环里面累加,如:string+=@item.BuySum,这样不知道可以不?

支持(0) 反对(0) 如此低调的男人 | 园豆:840 (小虾三级) | 2015-08-10 17:39
0

var tempData = new List<int> {1, 2, 3, 4, 5, 6, 7};//这个后台数据

var data = [@foreach (var item in tempData)
{
var tmpStr = item + ",";
@tmpStr
}];
console.log(data);

亲测通过

茂茂 | 园豆:2860 (老鸟四级) | 2015-08-10 18:02

难道楼主是妹子,不是妹子的话,你这态度给赞

支持(0) 反对(0) 稳稳的河 | 园豆:4183 (老鸟四级) | 2015-08-10 20:31

var da = [
@foreach (var item in ViewBag.dataBuySum1)
{
var tmpStr = item + ",";
@item.BuySum
}
];

是指的这样吗,测试不通过,tmpStr是每一项加逗号,但是@tmpStr和tmpStr有关系麽...

我把@item.BuySum改成@tmpStr编译通不过的

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-11 13:57
0

直接string.Join哇。。。

var data = [@(string.Join(",",ViewBag.Xx as List<int>))]
幻天芒 | 园豆:36522 (高人七级) | 2015-08-10 20:06

且看源码:

var da = [
            @foreach (var item in ViewBag.dataBuySum2)
                        {
                            @(string.Join(",",item.BuySum))
                        }
         ];
        console.log(da);

且看结果:

逗号没上去

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-11 13:59

@Sakura丶紫嫣: 你注意看我的代码,和你的代码有啥区别?不需要foreach这些。你可以完全按照我的代码来书写试试,仅仅需要将ViewBag.Xx替换成ViewBag.dataBuySum2。

支持(0) 反对(0) 幻天芒 | 园豆:36522 (高人七级) | 2015-08-11 14:47

@幻天芒: 

值不能为null

支持(0) 反对(0) 默卿 | 园豆:4071 (老鸟四级) | 2015-08-11 14:57

@Sakura丶紫嫣: 注意下你的类型,你要保证你的dataBuySum是List<int>类型的,要不然会转换错误。。

支持(0) 反对(0) 幻天芒 | 园豆:36522 (高人七级) | 2015-08-11 15:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册