0

我正在尝试在 ViewBag var 中传递模型集合,然后在视图包中对其进行过滤,但出现错误。

“如果不先将 lambda 表达式转换为委托或表达式树类型,则不能使用 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,但不工作。有什么建议吗,谢谢。

4

2 回答 2

1

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

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);
于 2013-09-23T23:49:09.300 回答
0

这不是一个很好的代码..你不应该把你的逻辑放到视图中

于 2013-09-25T13:27:09.743 回答