0

我有三张桌子

类别---->ID,名称

CategoryCertifications --->CategoryId,CertificationId

认证 ----->Id,Name,Summary

我想在视图页面中显示证书名称和摘要列表。

我试过这样

ViewBag.CategoryCertifications=from pd in db.categories join od in db.categorycertifications on pd.id equals od.CategoryId join ct in db.certifications on od.certificationId equals ct.id select new { ct.Name,ct.Summary }).ToList();

在 ViewPage 我提到如下

var categories=(List<Certification>ViewBag.CategoryCertifications ?? new List<Certification>();

我在视图页面中收到以下错误

unable to cast object of type'system.collection.generic.list''[<>f_Anonymous type 2f'2[system.string,system.string]]' to type 'system.collection.generic.list' '[cn.models.Certification]'

谢谢提前..

4

3 回答 3

0

你能发送变量的数据类型吗?

建议:尝试在所需类型的models文件夹中创建自定义模型并创建它的实例。然后将数据附加到模型并简单地将自定义对象传递给视图......

于 2013-10-01T12:30:27.053 回答
0

由于您的课程认证包含Id ,Name, Summary

并且以下查询将返回包含的类型name and summary

 ViewBag.CategoryCertifications=from pd in db.categories join od in db.categorycertifications on pd.id equals od.CategoryId join ct in db.certifications on od.certificationId equals ct.id select new { ct.Name,ct.Summary }).ToList();

所以两者都是不兼容的,所以在这里无法投射,相反你可以这样做,

而不是铸造即这条线

var categories=(List<Certification>ViewBag.CategoryCertifications ?? new List<Certification>();

直接写ViewBag.CategoryCertifications在视图中使用即可。所以在运行时属性会绑定。确保您在视图中使用的属性名称。他们应该ct.Name,ct.Summary希望这会有所帮助。

于 2013-10-01T12:44:35.377 回答
0
ViewBag.CategoryCertifications=from pd in db.categories join od in
db.categorycertifications on pd.id equals od.CategoryId join ct in db.certifications on
od.certificationId equals ct.id select new 
{
ct.Name,ct.Summary
}).ToList();

在上面的代码中,您将匿名列表返回到视图并尝试将其转换为认证列表,因此出现错误。

尝试这个:

ViewBag.CategoryCertifications=from pd in db.categories join od in
db.categorycertifications on pd.id equals od.CategoryId join ct in db.certifications on
od.certificationId equals ct.id select new Certification
{
Name=ct.Name,Summary=ct.Summary
}).ToList();

在这种情况下,认证列表将通过查看。

于 2014-07-04T05:51:53.667 回答