我有一个场景,用户将提交一个表单,其中包含2个模型(数据库表)的信息:用户和请求。数据还需要一起列出由UserID加入,即列出所有用户或特定用户发出的所有请求。所以我还需要从两个表中输出数据。
我的解决方案是创建名为UserRequests的ViewModel,它将包含这两个模型,但是我仍然坚持实现。我不确定它是否应该如下所示:
public class UserRequestModel {
public User User1 { get; set; }
public Request Request1 { get; set; }
总而言之,Controller中的Index()函数将执行的操作是获取所有用户的请求查询,并列出两个表中的所有字段(已连接)。因此,我需要以某种方式将该查询中的数据导入ViewModel以输出它,并且不知道如何设置ViewModel以便这样做。任何见解将不胜感激。谢谢!
答案 0 :(得分:1)
您可以使用linq连接两个表,然后将记录投影到目标视图模型,如下所示:
var res =
from u in Users
join r in Requests on u.UserId equals r.UserId
select new UserRequestModel { User1 = u, Request1 = r};
您是否正在使用ORM(例如实体框架)来映射数据库表?
答案 1 :(得分:0)
ViewModel应该旨在帮助您显示数据。我建议你遵循每个View的规则1 ViewModel。 您应该首先清楚地设计出如何在视图中表示数据。我不确定您的ViewModel是否正是您要表示的内容。您想显示1个请求和所有用户相关吗?或者你想要1个用户和所有相关的请求?或者您想要与许多用户相关的许多请求?
根据您的需要,您应该创建ViewModel。想象一下,你想要1个用户和多个请求,那么我会在用户类中找到一个请求列表。
答案 2 :(得分:0)
我唯一能想到的就是你会得到一个用户和一个请求,在你的帖子接缝中你会得到不止一个。
我会根据你喜欢的内容将属性更改为Lists,IEnumerables或Arrays,然后当你从数据库中获取帖子时,创建ToList(),ToArray()或类似的。
var Users = dbcontext.Users.Where(x => x.ex == example).ToList()
在获取数据时,您可以使用您喜欢的扩展方法。
Field1: Field1Text
Field2: Field2Text
Field3 (need to ignore)
Field4 (need to ignore)
Field5
Field5Text
// Cars - for example
#,Col1,Col2,Col3,Col4,Col5,Col6
#1,Col1Text,Col2Text,Col3Text,Col4Text,Col5Text,Col6Text
#2,Col1Text,Col2Text,Col3Text,Col4Text,Col5Text,Col6Text
#3,Col1Text,Col2Text,Col3Text,Col4Text,Col5Text,Col6Text