C# ASP.NET MVC是否在一个视图中返回3个操作?

C# ASP.NET MVC是否在一个视图中返回3个操作?,c#,asp.net-mvc,C#,Asp.net Mvc,我遇到了一个小问题,我试图在一个视图中显示Facebook、Instagram和twitter,并按日期排序,但我真的不知道如何才能做到这一点 这是我对Twitter的操作结果,然后我对Instagram和Facebook的操作结果几乎相同 var twitterContext = new TwitterContext(auth); ulong sinceId = 1; const int Count = 20; var comb

我遇到了一个小问题,我试图在一个视图中显示Facebook、Instagram和twitter,并按日期排序,但我真的不知道如何才能做到这一点

这是我对Twitter的操作结果,然后我对Instagram和Facebook的操作结果几乎相同

        var twitterContext = new TwitterContext(auth);
        ulong sinceId = 1;
        const int Count = 20;

        var combinedSearchResults = new List<Status>();
        var tweets =
            await
            (from tweet in twitterContext.Status
             where tweet.Type == StatusType.User &&
             tweet.Count == Count &&
             tweet.RetweetedStatus.StatusID == 0 &&
             tweet.ExcludeReplies == true &&

             tweet.SinceID == sinceId

             select new NewsViewModel
             {
                 DateAdded = tweet.CreatedAt,
                 ScreenName = tweet.User.ScreenNameResponse,
                 Text = tweet.Text,
                 StatusId = tweet.StatusID
             })
            .ToListAsync();
        return View(tweets);

    }
var twitterContext=新twitterContext(auth);
ulong sinceId=1;
常数整数计数=20;
var combinedSearchResults=新列表();
var推特=
等待
(来自twitterContext.Status中的tweet
其中tweet.Type==StatusType.User&&
tweet.Count==Count&&
tweet.RetweetedStatus.StatusID==0&&
tweet.ExcludeReplies==true&&
tweet.SinceID==SinceID
选择新的NewsViewModel
{
DateAdded=tweet.CreatedAt,
ScreenName=tweet.User.ScreenNameResponse,
Text=tweet.Text,
StatusId=tweet.StatusId
})
.ToListAsync();
返回视图(tweets);
}
我如何将这三个元素放在一起,并在索引视图中显示它们?
我对这方面有点陌生,非常感谢您的回答和帮助

如果我理解正确,您希望将所有三个来源都显示在一个列表中

假设您可以将这三种类型转换为您的
NewsViewModel
类型,然后只需将Facebook和Instagram的结果添加到同一列表中,并将该列表传递给您的视图即可

因此,您不需要使用三个视图—您从控制器中的三个数据源获取数据,然后将合并列表传递给一个视图

类似这样的内容(整合,但你明白了):


如果我理解正确的话,您希望获取所有三个源并将它们一起显示在一个列表中

假设您可以将这三种类型转换为您的
NewsViewModel
类型,然后只需将Facebook和Instagram的结果添加到同一列表中,并将该列表传递给您的视图即可

因此,您不需要使用三个视图—您从控制器中的三个数据源获取数据,然后将合并列表传递给一个视图

类似这样的内容(整合,但你明白了):

ASP.NET内核 它可以通过创建三个组件来实现,这三个组件由Microsoft.AspNetCore.Mvc.ViewComponent驱动:

public class TwitterViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync(string parameter)
    {
        ...
        return View(tweets);
    }
}
ASP.NET MVC 5及更早版本 您可以仅在视图中渲染子操作:

<div>
    @{Html.RenderAction("Twitter");}
</div>

@{Html.RenderAction(“Twitter”);}
ASP.NET核心 它可以通过创建三个组件来实现,这三个组件由Microsoft.AspNetCore.Mvc.ViewComponent驱动:

public class TwitterViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync(string parameter)
    {
        ...
        return View(tweets);
    }
}
ASP.NET MVC 5及更早版本 您可以仅在视图中渲染子操作:

<div>
    @{Html.RenderAction("Twitter");}
</div>

@{Html.RenderAction(“Twitter”);}
可能是您想要的:

var postList = new PostList();
var twitterPost = await GetTwitterpost(....);
var fbPost = await GetFbPost(....);
var instagramPost = await GetInstagramPost(....);
if(twitterPost !=null)
  postList.AddRange(twitterPost);
if(fbPost !=null)
  postList.AddRange(fbPost);
if(instagramPost !=null)
  postList.AddRange(instagramPost);

postList = postList?.OrderByDescending(p=>p.DateAdded).ToList();

return View(postList);
我不知道我是否真的明白你想要什么!但通过这种方式,您可以在一个集合中获得所有帖子,并可以按日期显示它们。

您可能希望这样:

var postList = new PostList();
var twitterPost = await GetTwitterpost(....);
var fbPost = await GetFbPost(....);
var instagramPost = await GetInstagramPost(....);
if(twitterPost !=null)
  postList.AddRange(twitterPost);
if(fbPost !=null)
  postList.AddRange(fbPost);
if(instagramPost !=null)
  postList.AddRange(instagramPost);

postList = postList?.OrderByDescending(p=>p.DateAdded).ToList();

return View(postList);

我不知道我是否真的明白你想要什么!但通过这种方式,您可以在一个集合中获得所有帖子,并可以按日期显示它们。

您需要对每个社交媒体都有部分视图。这可能有助于您了解每个社交媒体的局部视图。这可能对你有帮助