- 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/
我正在创建一个项目来使用评级系统评估不同的产品,但由于我是新手,所以我有几个问题。 首先,为了实现这个目标,我创建了一个 ListView ,它允许我使用从该数据库获取的 JSON 代码显示 MySQ
在对学校的大型作业进行故障排除时,我发现了一个错误,我将单个项目列表(包含一个项目的堆栈)视为单个项目。我解决了我的问题,但是在进一步的测试中我注意到一些奇怪的事情: 48 ?- 1 is [1].
嘿,我正在修改我在 Internet 上找到的示例应用程序。 (学习2破解)我想在我的 ReclycerView 中获取单行的 ID。这是代码。 主要 private void initVie
我在一个项目中使用 ASP.NET MVC SiteMap 提供程序,它运行良好。但是,我很难弄清楚如何隐藏菜单项。我想在全局导航中隐藏的菜单项是我的“站点地图”页面。现在我知道有一个东西叫做 Vis
我是一名优秀的程序员,十分优秀!