繁体   English   中英

将表联接结果传递给视图?

Passing table join results to a view?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有以下ASP.Net MVC控制器动作,该动作连接了2个表:

public ActionResult PersonNotes()
{
    var model = db.Notes
        .Join(db.People, p => p.NotesListId, n => n.NotesListId, 
            ((note, person) => new { note, person })).ToList();
    return View(model);
}

在我看来,我有以下模型声明:

@model IEnumerable<Tuple<Models.Note, Models.Person>>

我收到以下错误:

System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[<>f__AnonymousTypef`2[Models.Note,Models.Person]]', but this dictionary requires a model item of type System.Collections.Generic.IEnumerable`1[System.Tuple`2[Models.Note,Models.Person]]'.

我意识到我可以在联接中使用ViewModel和Select(),但是无需创建ViewModel就可以访问所有项将更加方便。

我认为正确的声明是什么,或者我试图通过这种方式无法实现的声明?

1 个回复

您正在返回一个匿名对象,并且您的视图需要带Tuple的模型。 匿名类型由编译器生成,并且在源代码级别不可用。

试着改变你的语句来创建IEnumerable<Tuple<Models.Note, Models.Person>>Tuple.Create

var model = db.Notes
    .Join(db.People, p => p.NotesListId, n => n.NotesListId, 
        ((note, person) => Tuple.Create(note, person))).ToList();

参见Tuple.Create

如果您正在使用Linq to Entities或Entity Framework,则需要将IQueryable迭代到Tuple或使用一个class

var model = db.Notes
    .Join(db.People, p => p.NotesListId, n => n.NotesListId, 
        ((note, person) => new { note, person }))
    .AsEnumerable()
    .Select(x => Tuple.Create(x.note, x.person))
    .ToList();

要么

创建一个class来容纳PersonNote

public class PersonNote
{
    public Person Person { get; set; }
    public Note Note { get; set; }
}

更改该语句以使用新的PersonNote

var model = db.Notes
    .Join(db.People, p => p.NotesListId, n => n.NotesListId, 
        ((note, person) => new PersonNote { Note = note, Person = person }))
    .ToList();

更改模型。

@model IEnumerable<PersonNote>
1 将联接的表传递到剃刀视图

我是MVC架构的新手,我有以下连接两个表的Controller: 我应该如何在视图中设置@ModelType以便引用q中的值? 我的项目名称是ECRM,我似乎无法得到VS2013承认什么,当我键入ECRM.Models 加入表格似乎给我带来的麻烦比我最初想的要多! ...

3 DVWP-将rowId传递给子联接的子视图

我在Sharepoint Designer中有一个DVWP,用于显示测验答案列表(列表项)。 这是一个联接的子视图,用于将另一个列表中的相应问题加载到答案行中。 在每个答案行中,如何将其对应的rowId传递给辅助联接子视图? 我似乎无法从子级内部访问父级的rowId。 基本上,我 ...

4 SQL-使用联接将列表传递给查找表

我希望能够遍历一个列表并返回所有列表元素均已匹配的一行。 例如 恐怕我的ID列表是1,2,3,我想编写一个SQL语句来执行以下操作(不间断)。 从TBL中选择id1 0 = 0并且id2 = 1 AND id2 = 2 AND id2 = 3 这可能吗? 提前致谢 ...

6 将多个表ID传递给视图Laravel

所以这是我的问题。 我正在尝试为两个表Customer和Booking创建两个条目。 其中客户ID是预订表中的外键,而客户表中的主键。 我要做的是将新生成的客户ID和预订ID传递到同一控制器中的另一个函数(编辑功能)。这样我就可以使用生成的客户ID更新预订表列。 有一种简单的方法可以做到 ...

7 将数据透视表视图传递给laravel

我在这里看到了一些问题,但是没有一个解决我的问题。 我很困惑。 我在社区和想法模型之间有很多联系。 它将值完美地保存在数据透视表中,但是我无法获取数据进行查看。 创意模型: 社区模式: 商店发布功能: 视图:当我尝试使用它时,它抛出: 未定义的属性: ...

8 将NSFetchedResultsController作为属性传递给表视图

我有很多供应商的表格视图。 选择后,每一行将打开另一个表格视图,其中包含该供应商的员工列表。 我想知道是否将NSFetchedResultsController作为属性传递给第二个表视图是否被认为是不好的做法。 我应该只传递必要的信息以在第二个视图中创建NSFetchedResults ...

9 Oracle视图将值从表传递给函数?

我正在尝试创建一个将显示两列的Oracle视图: 员工编号,部门编号 要获取department_id,我需要将一个employee_id传递给我今天正在使用的函数中: 这只会给我传递给它的employee_id的department_id列表。 我可以从employe ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM