C# ASP.NET MVC是否在一个视图中返回3个操作?
我遇到了一个小问题,我试图在一个视图中显示Facebook、Instagram和twitter,并按日期排序,但我真的不知道如何才能做到这一点 这是我对Twitter的操作结果,然后我对Instagram和Facebook的操作结果几乎相同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
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);
我不知道我是否真的明白你想要什么!但通过这种方式,您可以在一个集合中获得所有帖子,并可以按日期显示它们。您需要对每个社交媒体都有部分视图。这可能有助于您了解每个社交媒体的局部视图。这可能对你有帮助