【问题标题】:Orchard CMS - Navigation does not work anymoreOrchard CMS - 导航不再起作用
【发布时间】:2011-08-25 07:14:12
【问题描述】:

我是 Orchard CMS 系统的新手。 http://www.orchardproject.net

我安装了 1.0 版,现在他们更新了,我安装了 1.1.30 版,但从未真正发布过任何东西。

我下载了导航功能“高级菜单 - 版本:1.2.1”,我看到了一些要使用的菜单项并尝试了一些东西。但是我不能再删除它们了

如果我禁用和启用我会收到错误:

    In einen eindeutigen Index kann kein doppelter Wert eingefügt werden. 
[ Table name = Szmyd_Orchard_Modules_Menu_AdvancedMenuPartRecord,Constraint 
name = UQ__Szmyd_Orchard_Modules_Menu_AdvancedMenuPartRecord__0000000000000352 ]

但我可以看到带有高级子项的导航菜单。

我不知道菜单从哪里得到他的信息,但是像“Sprecher”这样的项目在“高级菜单导航”上但是当我点击删除时出现错误:

404 - Datei oder Verzeichnis wurde nicht gefunden.

我尝试了几天的任何解决方案都没有成功。请帮忙。

【问题讨论】:

  • 谢谢,我会调查此问题并及时向您发布解决方案。
  • 非常感谢 pszmyd。我已经搜索了几天以寻找任何解决方案。请问您能告诉我物品存放的位置吗?如果它对你来说很简单,我可以提供通过远程桌面观看。
  • 您好,我跟踪了您提供的错误。第一个涉及在“启用”步骤创建默认导航菜单(这会引发错误,因为“主”菜单已经存在并且菜单名称列应该是唯一的)。所以不要担心。 (虽然我会解决这个问题)。其他一些人也报告了删除项目的错误,这是由于 URL 中的防伪令牌无效而发生的。我也会解决这个问题(可能明天),并随时通知您。感谢您的反馈!

标签: asp.net asp.net-mvc asp.net-mvc-3 navigation orchardcms


【解决方案1】:

我设法找出了问题的根源,这两个问题都将在即将发布的版本中得到解决。我会尽量在这周结束前完成。

第一期

不用担心禁用和启用模块后遇到的错误 - 这是一次性的,不会影响模块的使用(当然会修复)。

禁用模块不会删除任何底层数据库表——它只是告诉框架不要使用模块代码。默认菜单是在启用步骤中创建的,即使您禁用该模块,它也会保留在那里。不幸的是,它不会检查菜单是否已经创建,所以每次启用模块时,它都会喊“试图在唯一索引中插入重复项”(菜单名称是唯一的)。

第二期

您可以应用此修复程序以允许删除菜单。 转到 [Root]/Modules/Szmyd.Orchard.Modules.Menu/Views/MenuAdmin/Index.cshtml 并替换

@Html.ActionLink(T("Delete menu").Text, "Delete", "MenuAdmin", new { Area = "Szmyd.Orchard.Modules.Menu" }, new { @class = "button primaryAction" })

与:

<a href="@Html.AntiForgeryTokenGetUrl(Url.Action("Delete", new { menuName = Model.MenuName }))" class="button primaryAction">@T("Delete menu") </a>

这将使删除链接正确呈现。

更新

我忘了补充一点,有人报告说 删除 操作不适用于名为 'main' 的菜单。我调查了问题并找到了问题的根源。

第一

主菜单的问题在于,无论您是否删除菜单,管理仪表板中的“主菜单”链接始终存在。此链接由旧的默认 Orchard 导航系统添加,但指向该链接的 URL 已被高级菜单模块覆盖。

第二

删除菜单后,相应的菜单项不会被删除。项目通过其名称与相应的菜单连接,因此如果删除“主”菜单,则在菜单本身被删除后,所有连接到“主”的项目仍然存在。这就是为什么单击“主菜单”后,您会突然看到所有菜单项,好像什么也没发生一样。 但是点击“删除菜单”会抛出一个不错的 404 错误,因为菜单本身不存在。

我会尽快解决所有这些问题并发布修复。

【讨论】:

  • 嗨 pszmyd。让我非常感谢您的回复。我试图更改 Index.cshtml 文件。这很清楚也很容易。但是问题还是出现了。单击删除按钮时找不到页面。也许,如果允许的话,我可以通过 Teamviewer 分享我的情况。如果我现在可以设置页面那就太好了(因为菜单,我要等几个月才能做到这一点)。我还是不太明白菜单的存储位置。
  • 确切错误“错误 404-找不到文件或文件夹”,URL:h**p://domain.ch/page/Admin/Navigation/main/Delete?__RequestVerificationToken=20T9ztSTXMiN%2f8thCXIdTjrInObPJ0VEstAf0L0% 2bML5b3kn6A1XMCKvctqhiwwIa0nlKsNQkD61aoamh%2fXYjND0ATPMVRQfadaCuDQvJJz9WaR1aJEwGym9jesQf%2btDUYF8W3AQFBl%2fl2MXkXUxx5AhBZf8W6C4%2fMW6efGP7Nr6BnAS1BdiC57Q6T0FQilgPvkXrjXqTR4wUuTPkpB5xjA%3D%3D 跨度>
  • 有些人报告说删除不适用于名为“main”的菜单(默认菜单)。这很奇怪,因为它只是一个普通的菜单,就像其他菜单一样,只是称为“主菜单”。我必须追查到这一点——我怀疑存在一些路由问题,因为内置的 Orchard 菜单系统(您在开始时得到的简单系统)使用类似的路由。尝试创建一个新菜单,看看删除它是否也会以 404 错误结束,好吗?如果没有 - 您可以简单地忽略“主”菜单并在小部件中使用新菜单。我将在即将发布的版本中对此进行修复。
  • 菜单和菜单项都是 Orchard 内容类型。它们存储在两个数据库表中 - 菜单:Szmyd_Orchard_Modules_Menu_AdvancedMenuPartRecord,菜单项:Szmyd_Orchard_Modules_Menu_AdvancedMenuItemPartRecord。此外,TemplatedMenuItem 的模板存储在 Common_BodyPart 表中(与上面菜单项表中对应记录的 Id 相同)。
  • 这样做: 1. 创建一个新菜单。为此,请转到导航 > 创建新菜单。输入您想要的名称,例如。 “我的菜单”并点击“保存”。转到导航>“菜单”(例如“我的菜单”)并添加所有必要的项目。 2. 更新现有小部件(在小部件窗格中)以显示“mymenu”而不是“main”(名称区分大小写)。默认情况下,导航区域中应该存在一个名为“主菜单”的样式菜单小部件。通过单击它来编辑它。如果小部件不存在(因为已被删除),请添加一个(样式化菜单小部件或菜单小部件)。仅此而已。
猜你喜欢
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多