【问题标题】:Umbraco Razor Orderby custom propertyUmbraco Razor Orderby 自定义属性
【发布时间】:2017-08-13 17:00:23
【问题描述】:

我在 Umbraco v6.2.4 中使用部分视图来提取相关文章列表。下面的脚本完美运行,并使用“Refactored.Umbraco.MVCExtensions”来提取文章的查看次数。到目前为止一切顺利,但我想按最受欢迎的文章(即基于查看次数)对文章列表进行排序/排序。但是,视图计数不是 Umbraco 模型的一部分,所以我不知道如何基于此对列表进行排序/排序,或者是否有其他方法?

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@using Refactored.UmbracoViewCounter @{

var articles = Model.Content.AncestorOrSelf(4).Children.Where(x => x.IsVisible()).OrderBy("articleCategory, articleDate desc");

int pagerank = 1;
string elementId;

<div>
    <p class="h3">Most Popular</p>

    @foreach (var item in articles.Take(6))
    {
        elementId = "content_" + pagerank.ToString();
        <div class="items @elementId">
            <span class="pagerank">@pagerank</span>
            <a href="@item.Url">
                <p>@(item.GetPropertyValue<string>("title"))</p>                  
            </a>
            <span class="views-counter"> @ViewCount.GetViewCount(item.Id, category: "articles", increment: false)</span>
        </div>
        pagerank = pagerank + 1;
    }

</div>

}

【问题讨论】:

  • 您能告诉我们您是如何存储观看次数的吗?
  • 查看次数存储在 Umbraco 数据库中名为“dbo.refViewCount”的表中。该表包含 id、nodeId、count、lastViewed 和 category。

标签: asp.net-mvc razor umbraco partial-views


【解决方案1】:

您可以使用 Linq 合并两个列表然后排序,如下所示,我假设您使用 petapoco 作为查看计数表,我无法测试代码,因为我没有您的自定义数据表,但我认为您可以在这里向正确的方向移动:

var db = ApplicationContext.DatabaseContext.Database;
var sql = new Sql()
    .Select("*")
    .From<RefViewCount>(new SqlServerSyntaxProvider());

var refViewCountList = db.Query<RefViewCount>(sql);

var articles = Model.Content.AncestorOrSelf(4).Children.Where(x => x.IsVisible()).Select(r => new {Item = r, ViewCount = refViewCountList.Where(v => v.nodeId == r.Id).Select(v => v.count).SingleOrDefault()}).OrderBy(r => r.ViewCount).ToList();

【讨论】:

  • 好的,谢谢,我已经尝试过了,但出现以下错误:找不到类型或命名空间名称“RefViewCount”(您是否缺少 using 指令或程序集引用?)
  • 您使用的是 Petapoco 还是 ViewCount Table 的实体框架?我只是假设你有名为 RefViewCount 的 petapoco 模型,但它应该是 ViewCount 表的真实类名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多