导航
  • 主页
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

EF多表查询结果转换成ViewModel

小枝_3 湖南铁路科技职业技术学院 2021-05-26 01:27:31
我在项目中通过ef两表查询获取了一个var 数据集合


public dynamic GetAllPalte()
{
using (CSDC_DBEntities context =new CSDC_DBEntities())
{
var paltes = from p in context.T_palte
join u in context.T_user on p.u_id equals u.u_id
select new
{
p_id = p.p_id,
p_name = p.p_name,
p_logo =p.p_logo,
p_introduce =p.p_introduce,
p_discussnums =p.p_discussnums,
u_id =u.u_id,
u_name =u.u_username

};
return paltes.ToList();

}
}

我想将其在控制器中转换为ViewModel绑定到View视图中
我应该怎样做?
...全文
284 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小枝_3 05-26
引用 3 楼 exception92 的回复:
在view顶部声明@model时,如果从controller返回的是实体,则声明为@model xxx.xxx.BBSModel,如果是其它类型,则声明为对应类型即可。例如: @model List<BBSModel>,此时的Model就是List<BBSModel>。可以被正常迭代。
感谢回复 那我逻辑层的GetALLPalte 方法返回类型应该定义为LIst<?>什么类型?,我ViewMoel如此定义是否正确?
回复
在view顶部声明@model时,如果从controller返回的是实体,则声明为@model xxx.xxx.BBSModel,如果是其它类型,则声明为对应类型即可。例如: @model List<BBSModel>,此时的Model就是List<BBSModel>。可以被正常迭代。
回复
cpongo1 06-11
@exception92
回复
View视图中的Model被认为是当前的View的实体对象,对象不支持迭代。
回复
小枝_3 05-26
引用 5 楼 exception92 的回复:
[quote=引用 4 楼 小枝_3 的回复:][quote=引用 3 楼 exception92 的回复:]在view顶部声明@model时,如果从controller返回的是实体,则声明为@model xxx.xxx.BBSModel,如果是其它类型,则声明为对应类型即可。例如: @model List<BBSModel>,此时的Model就是List<BBSModel>。可以被正常迭代。
感谢回复 那我逻辑层的GetALLPalte 方法返回类型应该定义为LIst<?>什么类型?,我ViewMoel如此定义是否正确?[/quote] 使用弱类型ViewBag在View中直接赋值或者select new 一个强类型转成List<定义的强类型>[/quote] 我尝试使用Select new 一个 var .tolist(),方法返回类型时 在 public List<BBSModel> GetALLPalte() 时,"List<BBSModel>"报错了
回复
小枝_3 05-26
引用 5 楼 exception92 的回复:
[quote=引用 4 楼 小枝_3 的回复:][quote=引用 3 楼 exception92 的回复:]在view顶部声明@model时,如果从controller返回的是实体,则声明为@model xxx.xxx.BBSModel,如果是其它类型,则声明为对应类型即可。例如: @model List<BBSModel>,此时的Model就是List<BBSModel>。可以被正常迭代。
感谢回复 那我逻辑层的GetALLPalte 方法返回类型应该定义为LIst<?>什么类型?,我ViewMoel如此定义是否正确?[/quote] 使用弱类型ViewBag在View中直接赋值或者select new 一个强类型转成List<定义的强类型>[/quote]能否就我上面的例子举一下例吗,麻烦了,还是有点疑惑(这个强类型是viewmodel吗)
回复
引用 4 楼 小枝_3 的回复:
[quote=引用 3 楼 exception92 的回复:]在view顶部声明@model时,如果从controller返回的是实体,则声明为@model xxx.xxx.BBSModel,如果是其它类型,则声明为对应类型即可。例如: @model List<BBSModel>,此时的Model就是List<BBSModel>。可以被正常迭代。
感谢回复 那我逻辑层的GetALLPalte 方法返回类型应该定义为LIst<?>什么类型?,我ViewMoel如此定义是否正确?[/quote] 使用弱类型ViewBag在View中直接赋值或者select new 一个强类型转成List<定义的强类型>
回复
小枝_3 05-26
我做过这样的尝试 ViewModel代码

 public class BBSModel
    {
       public int p_id { get; set; }
       public string p_name { get; set; }
       public string p_logo { get; set; }
       public string p_introduce { get; set; }
       public int u_id { get; set; }
       public string u_username { get; set; }
    }
控制器代码

  public ActionResult BBS()
        {
            BBSModel bbsModel = new BBSModel();
            bbsModel = discussManager.GetALLPalte();                        
          

            return View(bbsModel);
        }
但是我在View视图中使用时
回复
小海牙 07-08
@小枝_3 兄弟,你返回的是个BBSModel,不是List&lt;BBSModel&gt;,一个对象你循环啥
回复
发动态
发帖子
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
社区公告
暂无公告