.NET MVC ViewBag模型在视图中过滤

时间:2013-09-23 23:31:04

标签: c# .net asp.net-mvc lambda

我试图在ViewBag var中传递一个模型集合,然后在视图包中过滤它,但是我收到了错误。

“不能将lambda表达式用作动态调度操作的参数,而不先将其转换为委托或表达式树类型”

在控制器中我有下一个代码

List<PersonalModel> Personal = new List<PersonalModel>();
Personal = db.Personal.ToList();
ViewBag.Personal = Personal;

在我看来,我想做这样的事情

@{
        var personal = ViewBag.Personal;
        personal=personal.Where(s => s.ID == @Html.DisplayFor(modelItem => item.ID) ).FirstOrDefault();
        @personal.FullName
}

我想使用我在视图模型中加载的id,在模型中只显示FullName,但不起作用。有什么建议吗?谢谢。

2 个答案:

答案 0 :(得分:0)

刚刚确认,当您在视图侧抓住动态时施放动态,您应该能够按预期使用它:

List<someObject> someSet = new List<someObject>();
dynamic dynamicSet = someSet;

// this will error because you cant perform lambda expressions on a dynamic
dynamicSet.Select(a => a.se == false);

// this will work because it is now casted into the structure you want and can work with
var newSet = (List<string>)dynamicSet;
newSet.Select(a => a.se == false);

答案 1 :(得分:0)

这不是一个很好的代码..你不应该将你的逻辑放入视图