c# - 使用 Razor LINQ .Where() 查找具有特定日期值的 Umbraco 节点

标签 c# razor umbraco

我目前正在重写一个 XSLT 宏来显示当前页面的子节点,具体取决于为“月”和“年”设置的查询字符串变量。这用于显示特定时期文章的新闻列表页面。

在旧宏中,我遍历并选择“newsDate”属性(这是一个日期选择器字段)的月份部分所在的节点,并将它们分配给 nodelist 变量。 $Displaymonth 从查询字符串中收集。

<xsl:for-each select="$currentPage/*[@isDoc]">
          <xsl:sort order="descending" select="newsDate" data-type="text"/>
          <xsl:if test="umbraco.library:FormatDateTime(newsDate, '%M') = $displayMonth">
            <xsl:copy-of select="." />
          </xsl:if>
</xsl:for-each>

我在使用 Razor 语法创建类似的节点列表时遇到了问题。假设查询字符串月份是八月,我尝试过类似的事情

Model.Children.Where(umbraco.library.FormatDateTime(newsDate,'M') + " == 8");
Model.Children.Where("Convert.ToDateTime(newsDate).Month == \"8\"");
Model.Children.Where("newsDate.Month == \"8\"");
Model.Children.Where("newsDate.Value.Month == \"8\"");
Model.Children.Where(i=>Convert.ToDateTime(i.GetProperty("newsDate").Value).Month==8))

调试错误主要是提示我的 newsDate 变量中没有属性“month”。或者是“'Func`2' 类型中不存在任何属性或字段日期”。无论我做什么,它似乎都将我的 Datepicker 属性视为一个字符串,如所述 here但我使用的是最新版本的 umbraco。

如何通过转换日期选择器属性(Umbraco 中的 DateTime 对象)的月/年并将其与变量进行比较来找到 child ?我怎样才能在 .Where 语句中获取此日期属性并提取月/年?

最佳答案

注意:这种形式的 LINQ 语法是 umbraco DynamicNode 对象特有的(来自大约 umbraco v4.7.1)

如果您使用 values 字典,其中字典中的项目是 DateTime 类型,并且您要比较的属性是日期属性,那么会执行某种类型强制转换,您将获得所需的功能,这就是我的方法做到了:

var values = new Dictionary<string,object>();
values.Add("queryStartDate", DateTime.Parse(Request["queryStartDate"])) ;
values.Add("queryEndDate", DateTime.Parse(Request["queryEndDate"])) ;
var results = Model.Children.Where("newsDate > queryStartDate && newsDate < queryEndDate", values);

关于c# - 使用 Razor LINQ .Where() 查找具有特定日期值的 Umbraco 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6955710/

相关文章:

c# - C#中的事件是什么?

css - 跨浏览器按钮之间的间距不一致?

c# - 在 Umbraco 的 Razor 中的潜在字符串上使用 string.IsNullOrEmpty

Umbraco v6 部署到生产服务器获取数据库异常,内容和媒体树未加载

c# - 使用带有 Umbraco Controller 的简单注入(inject)器

c# - 获取分页 DirectorySearcher 的搜索结果总数

c# - 传递给 WCF 服务的可选查询字符串参数

c# - 指数分布柏林噪声的实现问题

razor - VS 2015 Razor 自动完成/智能感知下拉菜单在下拉菜单后立即隐藏

c# - MVC3 (Razor) 单选按钮检查