首页 新闻 搜索 专区 学院

关于mvc中传递匿名对象,view中无法解析

0
悬赏园豆:10 [已解决问题] 解决于 2014-04-29 15:32

以前用nvelocity传递匿名对象时,htm中能解析出来;

现在使用vs内置的razor引擎,传递一个匿名对象,就无法解析成功了。

网上说是因为编译时匿名类型是internal访问权限的原因,那么nvelocity是怎么做到成功访问的呢?

 

ViewBag.List = from a in db.T_Components ... select new{A=a.ID, B=a.Name};

 

ps:现在使用tuple来规避的。。

nicklooo的主页 nicklooo | 菜鸟二级 | 园豆:201
提问于:2014-04-28 22:38
< >
分享
最佳答案
0

匿名对象不能跨域传输.类型信息会丢失.

这才是你这个问题的根本原因

收获园豆:2
吴瑞祥 | 高人七级 |园豆:28891 | 2014-04-29 09:53

那除了tuple,还有别的解决方案么?

nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 11:06

@nicklooo: 没有解决方法,你可以用dynamic

吴瑞祥 | 园豆:28891 (高人七级) | 2014-04-29 11:50
其他回答(7)
0

ViewData继承自 IDictionary<string, Object>,是个字典类型,无法像你那样操作。你应该使用ViewBag。

收获园豆:2
wongdavid | 园豆:394 (菜鸟二级) | 2014-04-29 00:40

用viewbag、viewdata都试过了不行。。

现在是这样

 

支持(0) 反对(0) nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 09:13

@nicklooo: 你要强制转换T_Components集合类型,你是新手?

 

 

支持(0) 反对(0) wongdavid | 园豆:394 (菜鸟二级) | 2014-04-29 09:41

@wongdavid: 确实刚接触c#时间不久,T_Components是个实体对象Set,没看出哪里用了强制转换。。

支持(0) 反对(0) nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 11:09

@nicklooo: 学好基础吧。

支持(0) 反对(0) wongdavid | 园豆:394 (菜鸟二级) | 2014-04-29 14:03
0

ViewData,tempdata,viewbag都可以用的啊,你前台怎么解析的?

收获园豆:2
happydaily | 园豆:411 (菜鸟二级) | 2014-04-29 08:19

解析的时候提示 object未包含属性的定义

支持(0) 反对(0) nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 09:14

@nicklooo: 定义一个ViewModel,然后把值给ViewModel,前台用时转换成ViewModel

支持(0) 反对(0) happydaily | 园豆:411 (菜鸟二级) | 2014-04-29 11:14

@happydaily: 嗯,如果没办法也只能这样了

支持(0) 反对(0) nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 11:18
0

你需要把ViewBag转换成你对应的类型

foreach(var item in (类型)ViewBag.List)

{}

收获园豆:2
单恋 | 园豆:678 (小虾三级) | 2014-04-29 09:16

我传进去的是一个匿名的对象啊,这怎么转啊。。

支持(0) 反对(0) nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 09:19

@nicklooo:  这个我说错了。但是你查询的为 select new{A=a.ID, B=a.Name}; 没有查询这个BarcodeId啊。

支持(0) 反对(0) 单恋 | 园豆:678 (小虾三级) | 2014-04-29 09:41

@单恋: 后面代码做了下来小修改,把ID改成了BarcodeId。

支持(0) 反对(0) nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 11:06
0

匿名 前台反射

收获园豆:2
Qlin | 园豆:2403 (老鸟四级) | 2014-04-29 12:26

嗯,这个确实可行,不过由于数据量比较大,项数也比较多,前台反射以后效率会低很多。实在不行只有自己定义一个对象了

支持(0) 反对(0) nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 12:30
0

最终还是自己定义了一个类来存储结果,不使用匿名类型,项目时间比较紧,以后再继续研究。。

nicklooo | 园豆:201 (菜鸟二级) | 2014-04-29 12:31

这个问题是怎么解决的?只能定义一个类了吗?

支持(0) 反对(0) ZenTree | 园豆:204 (菜鸟二级) | 2015-10-26 22:27
0

我也遇到了这个问题,要是能解决的话,是最好的,希望博主留个联系方式一起解决

渲染、 | 园豆:202 (菜鸟二级) | 2014-11-21 11:34
0

using Newtonsoft.Json.Linq;
var resList= list.Select(u =>
{

            JObject job = new JObject{
                 new JProperty("Data" ,JToken.FromObject(u))
                };
            return job;
        }).ToList();

可以达到效果。

博你一阅 | 园豆:202 (菜鸟二级) | 2019-04-25 08:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册