- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Orchard 中,我通过该管理界面向内置的内容菜单项内容部分添加了一个名为“IsDone”的 bool 字段。然后,我在导航中选择了一个项目,并将我添加的相应字段的选项设置为"is"。
在我的自定义主题中,我复制了 MenuItem.cshtml。
如何在此处获取自定义“IsDone”字段的值?
我试过类似的东西
dynamic item = Model.ContentItem;
var myValue = item.MenuItem.IsDone.Value;
但我很确定我的语法不正确(因为我在运行时遇到空绑定(bind)错误)。
提前致谢!
最佳答案
首先,我建议您使用备用形状 MenuItemLink-ContentMenuItem.cshtml
而不是 MenuItem.cshtml
直接定位内容菜单项。
其次,该字段附加到ContentPart
的菜单项。以下代码从此内容部分检索 bool 字段:
@using Orchard.ContentManagement;
@using System.Linq;
@{
Orchard.ContentManagement.ContentItem lContentItem = Model.Content.ContentItem;
var lBooleanField = lContentItem
.Parts
.Where(p => p.PartDefinition.Name == "ContentMenuItem") // *1
.SelectMany(p => p.Fields.Where(f => f.Name == "IsDone"))
.FirstOrDefault() as Orchard.Fields.Fields.BooleanField;
if (lBooleanField != null)
{
bool? v = lBooleanField.Value;
if (v.HasValue)
{
if (v.Value)
{
@("done")
}
else
{
@("not done")
}
}
else
{
@("not done")
}
}
}
*1可悲的是你不能简单地写 lContentItem.As<Orchard.ContentManagement.ContentPart>()
这里是零件列表中的第一部分派(dispatch)生自此类型,因此您会收到错误的零件。
关于OrchardCMS:如何在 cshtml View 中访问内容菜单项 bool 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485199/
在撰写本文时,Orchard 项目 (http://www.orchardproject.net/) 的版本为 1.1。 我正在考虑将其用于金融服务网站。稳定性,安全性在这里是重中之重。大多数情况下,
我通过一个返回一组已知内容类型的内容项的查询定义了我自己的投影。我想提取这些内容项的某些内容部分并将它们显示在列表中。使用形状跟踪工具,我找到了编写自定义布局的 View 模板: /Views/Par
在迁移文件中使用 orchad 1.6 我刚刚更改了一个表并添加了一个列。我需要此列为 NotNull,但它不允许您更改表输入 NotNull 类型,因此我使用了 Nullable 并将数据输入到现有
我已经搜索了 Orchard 文档(以及一些 google-fu),但找不到任何解释 StereoType 是什么以及何时(如果可能)创建或扩展 StereoType 的内容。 有人可以解释一下它们是
我的布局文件中有以下区域: @Display(Model.Blog) 我想总是将我的博客文章列表呈现到这个区域中,所以我编辑了我的 place.info 文件,如下所示: Parts.Blogs.B
我刚刚下载并安装了Orchard CMS并开始使用它。 在区域中创建了一些小部件,并创建了博客并自定义了我的顶部菜单。 现在,我要对欢迎页面进行一些修改。我想删除标题字段和显示创建日期的行,仅显示正文
我在使用 Orchard 时遇到了一个问题,我确信应该有一个相当简单的修复/解决方案,但我还没有找到它。 我正在尝试为我的主页(580px)建立一个特定宽度的内容区域,并为内容页面(800px)建立一
在 Orchard 中,我有一个包含 DateTime 字段的自定义内容类型。我创建了一个规则,用于在提交新内容项时发送电子邮件。我可以使用以下标记在电子邮件中包含 DateTime 字段的值: {C
我创建了一个 PersonPart 并将其附加到我的 Employee 类型。它包含名字和姓氏,并实现了 ITitleAspect,这样当我创建一堆员工时,他们不会在内容列表中全部显示为“员工”。现在
我是 Orchard CMS 的新手。我已经从http://orchardproject.net/下载了源代码。我无法找到所提供的屏幕截图中内容周围的编辑链接。我曾在 Sitecore 工作过,现在正
我正在尝试覆盖实际区域模板的呈现。 它呈现出这样的东西: content is stuffed in here 我发现如果将 Zone.cshtml
也许这更像是一个 ASP.NET MVC 问题而不是一个 Orchard 问题,但我对这两个问题都比较陌生,我不知道这两种情况的答案。 ASP.NET MVC 应用程序在技术上没有单一入口点,所以我应
我正在尝试覆盖实际区域模板的呈现。 它呈现出这样的东西: content is stuffed in here 我发现如果将 Zone.cshtml
我对 Orchard 很陌生。 为了学习 orchard 模块开发,我按照文档尝试创建了一个商务模块。 模块由产品部分和产品类型组成。 在启用模块期间,它将为该模块创建管理菜单和主菜单,分别为“Com
我有一个自定义模块。 Migrations.cs 看起来像这样。 public int Create() { SchemaBuilder.CreateTable("My
我花了几个小时试图解决这个问题。希望这是一个简单的解决方案,难点仅是因为我是Orchard CMS的新手,并且没有专业的Web开发人员... 我已经创建了“产品下载”页面,需要插入指向文件系统上存在的
我想使用 AttributeRouting使用 Orchard CMS。为此,我需要实现 IRouteProvider使用返回 Orchard 列表的方法 RouteDescriptor s。 我需要
文档( here 和 here )明显缺乏关于如何解析模块中的引用的信息: References Resolution (TODO: Explain how Orchard figures out r
我在 Orchard 中构建了一个自定义模块,用于创建新的部件、类型和自定义事件,但我正在努力解决我需要做的最后一部分,即创建与 相关的所有内容项的副本特定的父项。 例如,当有人创建“贸易展览”(我的
我是 Orchard 模块开发的新手。我创建了一个模块。当我尝试保存数据时。我在保存数据之前使用此代码 public ActionResult Create(FormCollection in
我是一名优秀的程序员,十分优秀!