考虑以下代码:
控制器:
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");
}

我有一个类型为匿名的对象,尽管有数据,但它仍然显示一个错误。
如何防止此错误?
发布于 2018-08-27 17:38:05
您不能使用匿名类型通过ViewBag将数据从操作方法传递到视图。
创建一个视图模型类来表示要传递的数据。
public class YourVm
{
public string Ten { set; get; }
public string DuongDan { set; get; }
public string Icon { set; get; }
public string TrangThai { set; get; }
}在LINQ表达式中,使用此视图模型而不是匿名类型进行投影。
new YourVm { Ten = x.Ten,
DuongDan = x.DuongDan,
Icon= x.Icon,
TrangThai = x.TrangThai })发布于 2018-08-27 17:38:55
你不能那样做。只需使您的生活更容易,并创建一个视图模型类与您所需的所有属性。检查一下这个:
Stuffing an anonymous type in ViewBag causing model binder issues
https://stackoverflow.com/questions/52043945
复制相似问题