首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从消息中心访问消息

从消息中心访问消息
EN

Stack Overflow用户
提问于 2020-10-14 01:48:43
回答 1查看 52关注 0票数 0

嗨,我试着在主页上显示来自信息中心的前5条信息。但我不知道我做错了什么。我试图从message视图模型中获取消息,这是我的代码。

视图模型

代码语言:javascript
复制
@model Portal.ViewModel.MemberMessageViewModel

@foreach (var msg in Model.MessageList)

<div> @html.DisplayFor(modelItem => msg.CreatedOn) @html.DisplayFor(modelItem => msg.Subject) </div>

MessageViewModel.cs

代码语言:javascript
复制
public class MemberMessageViewModel : BaseViewModel { public string Subject { get; set; } public string CreatedOn { get; set}

   public List<MemberMessageViewModel> MessageList { get; set;}
}

控制器

代码语言:javascript
复制
public async Task<IActionResult> 

Homepage()
{
  string MESSAGE_PANEL_NAME = _configuration.GetSection(“TemplateStrings”).GetSection(“TEMPLATE_MESSAGECENTER”).Value;

try{
 memberHomepageVM.messageDetail = await _messageService.GetHomepageMessages(MESSAGE_PANEL_NAME, Lang);
}

Cshtml

代码语言:javascript
复制
@awaitHtml.PartialAsync(“_message”, Model.messageDetail)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-14 08:45:21

要显示前5条记录,我们应该使用"OrderByDescending()“对消息进行排序,然后使用"采取(5)”方法获取前5条消息。

请参考以下示例代码:

  1. 根据您的MemberMessageViewModel创建一个服务,并设置初始数据: 公共类MessageService : IMessageService { public List GetHomepageMessages() { List messagelist = new List() { new MemberMessageViewModel(){ Subject="S1",CreatedOn=DateTime.Now.ToString()},new MemberMessageViewModel(){ Subject="S2",IMessageService new MemberMessageViewModel(){ Subject="S3",CreatedOn=DateTime.Now.AddDays(-4).ToString()},new MemberMessageViewModel(){ Subject="S4",CreatedOn=DateTime.Now.AddDays(-5).ToString()},new MemberMessageViewModel(){ Subject="S5",CreatedOn=DateTime.Now.AddDays(2).ToString()},new MemberMessageViewModel(){ Subject="S6",CreatedOn=DateTime.Now.AddDays(-8).ToString()},新MemberMessageViewModel(){ Subject="S7",Subject= };返回消息传递者;}
  2. 在Startup.ConfigureServices方法中注册服务: services.AddScoped();
  3. 主页控制器: 公共异步任务主页(){//获取消息列表var messages = _messageService.GetHomepageMessages() .OrderByDescending(c => Convert.ToDateTime(c.CreatedOn)) //基于CreatedOn属性对消息进行排序。.Take(5) //接收前5条消息。.ToList();//根据视图页面绑定模型,您似乎希望返回一个MemberMessageViewModel。MemberMessageViewModel成员=新的MemberMessageViewModel() { CreatedOn = DateTime.Now.ToString(),CreatedOn= "Subject A",MessageList = messages,};//返回视图(成员);}
  4. 网页浏览网页(Homepage.cshtml): @model Test.Models.MemberMessageViewModel @foreach (var msg in Model.MessageList) { @Html.DisplayFor(modelItem => msg.CreatedOn) @Html.DisplayFor(modelItem => msg.Subject) }

产出如下:

此外,还可以对视图页面中的消息进行排序和获取:

代码语言:javascript
复制
        @model Test.Models.MemberMessageViewModel

        @foreach (var msg in Model.MessageList.OrderByDescending(c => Convert.ToDateTime(c.CreatedOn)).Take(5))
        { 
            <div>
                @Html.DisplayFor(modelItem => msg.CreatedOn)
                @Html.DisplayFor(modelItem => msg.Subject)
            </div><br/>
        }

如果我误解了你的问题,请随便告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64345486

复制
相关文章

相似问题

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