gpt4 book ai didi

OrchardCMS:如何在 cshtml View 中访问内容菜单项 bool 字段

转载 作者:行者123 更新时间:2023-12-01 22:21:52 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com