【问题标题】:.NET MVC ViewBag Model Filtering in view.NET MVC ViewBag 模型过滤视图
【发布时间】:2013-09-23 23:31:04
【问题描述】:

我正在尝试在 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,但无法正常工作。有什么建议吗,谢谢。

【问题讨论】:

  • 如果是动态的,为什么不直接将它投射到视图侧呢? var personal = (List)ViewBag.Personal;

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


【解决方案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);

【讨论】:

  • 太好了,我只需要使用正确的对象并且工作正常。谢谢。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2012-03-25
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多