首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘object’不包含‘Ten’的定义

‘object’不包含‘Ten’的定义
EN

Stack Overflow用户
提问于 2018-08-27 17:04:40
回答 2查看 388关注 0票数 0

考虑以下代码:

控制器:

代码语言:javascript
复制
 public ActionResult ShowMenu ()
        {
            if(Session["ID"] != null && Session["Ten"] != null && Session["User"] != null)
            {
                int id = (int)Session["ID"];
                ViewBag.user=  db.ChucNangs.Join(db.Chuc_Nang_Quan_Tris, x => x.ID, y => y.MaChucNang, (x, y) => new {Ten = x.Ten, DuongDan = x.DuongDan,Icon= x.Icon, TrangThai = x.TrangThai }).Where(x=>x.TrangThai == true).ToList();
                return PartialView("_menu_right");
            }
            return RedirectToAction("Logout");
        }

我有一个类型为匿名的对象,尽管有数据,但它仍然显示一个错误。

如何防止此错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-27 17:38:05

您不能使用匿名类型通过ViewBag将数据从操作方法传递到视图。

创建一个视图模型类来表示要传递的数据。

代码语言:javascript
复制
public class YourVm
{
    public string Ten { set; get; }
    public string DuongDan { set; get; }
    public string Icon { set; get; }
    public string TrangThai { set; get; }
}

在LINQ表达式中,使用此视图模型而不是匿名类型进行投影。

代码语言:javascript
复制
 new YourVm {  Ten = x.Ten, 
               DuongDan = x.DuongDan,
               Icon= x.Icon, 
               TrangThai = x.TrangThai })
票数 0
EN

Stack Overflow用户

发布于 2018-08-27 17:38:55

你不能那样做。只需使您的生活更容易,并创建一个视图模型类与您所需的所有属性。检查一下这个:

Stuffing an anonymous type in ViewBag causing model binder issues

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52043945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档