首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >model.tolist后将视图模型连接到模型

model.tolist后将视图模型连接到模型
EN

Stack Overflow用户
提问于 2015-07-21 14:31:09
回答 1查看 55关注 0票数 0

我已经创建了一个视图模型,我需要连接到一个知识库模型。我以前已经将视图模型与模型连接过,但是在这种情况下,intellisense对于结果并没有显示出知识库模型的任何字段。下面是我正在尝试的代码:

代码语言:javascript
运行
复制
   public ActionResult TechSearchKnowledgebase([Optional]Guid createdById, [Optional]Guid categoryId, [Optional]Guid typeId)
        {

            var model = db.Knowledgebases.AsQueryable();

            if (createdById != Guid.Empty)
            {
                model = model.Where(k => k.CreatedById == createdById);
                ViewBag.CreatedBy = db.Users.Where(c => c.UserId == createdById).First().FullName;
            }
            if (categoryId != Guid.Empty)
            {
                model = model.Where(k => k.CategoryId == categoryId);
                ViewBag.Category = db.Categories.Where(c => c.CategoryId == categoryId).First().CategoryName;
            }
            if (typeId != Guid.Empty)
            {
                model = model.Where(k => k.TypeId == typeId);
                ViewBag.Category = db.Roles.Where(c => c.RoleID == typeId).First().RoleDescription;
            }
            model=model.OrderBy(k => k.CreatedDate);
            var result=model.ToList();

            KnowledgebaseResult knowledgebaseResult = new KnowledgebaseResult();
            knowledgebaseResult.CategoryId = result.CategoryId;

            return View("TechKnowledgebaseList", result);

        }

正如Chris下面所建议的,我安装了自动程序,并在我的应用程序启动中设置了它。然而,在这一行上:

代码语言:javascript
运行
复制
List<KnowledgebaseResult> knowledgebaseResults = Mapper.Map<KnowledgebaseResult>(model.ToList());

他说,我正在得到错误,“不能隐式地将knowledgebaseResult转换为list。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-21 14:44:38

您正在尝试访问单个模型的单个属性,尽管您正在与列表进行交互。为了映射您的CategoryId,您需要遍历列表中的每一项并进行关联。有一些库可以使这个映射变得更清晰,比如AutoMapper (http://automapper.org/)。

使用AutoMapper,您只需在两个对象之间创建一个映射并传入一个数据源。

代码语言:javascript
运行
复制
Mapper.CreateMap<Knowledgebase, KnowledgebaseResult>();

将上述内容放在配置文件中,这将在Application_Start上被调用。

代码语言:javascript
运行
复制
List<KnowledgebaseResult> knowledgebaseResults = Mapper.Map<List<KnowledgebaseResult>>(model.ToList());

现在,假设所有属性都命名相同,那么每个KnowledgebaseResult都将从原始模型中映射出来。如果没有,可以使用以下语法覆盖映射:

代码语言:javascript
运行
复制
Mapper.CreateMap<Knowledgebase, KnowledgebaseReslt>().ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.KBId)); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31541984

复制
相关文章

相似问题

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