如何向基于 aspnetboilerplate 的项目添加新菜单?
How do I add a new menu to an aspnetboilerplate based project?
之前有人问过这个问题,但我会更准确地回答我的问题,希望能得到更好的答案:
我已经弄清楚如何将视图添加到 PageNames class:
public const string WorkOrders = "WorkOrders";
然后到 projectNavigationProvider class 让他们进入导航栏:
.AddItem(
new MenuItemDefinition(
PageNames.WorkOrders,
L("WorkOrders"),
url: "WorkOrders",
icon: "business",
requiredPermissionName: PermissionNames.Pages_WorkOrders
)
将我的主要视图添加到主导航栏并正常工作。
但是,我还没有想出如何创建一个全新的菜单以供其他地方使用。在我正在处理的应用程序中,我们有几个页面显示特定 table 中的所有记录,例如工单。但是每个 table 中的每条记录都应该有几个 link 到其他页面,用于创建、编辑、详细信息和删除。
我的一个合作伙伴似乎已经通过使用模式和 ajax 调用控制器端点来解决其他页面上的这个问题。它适用于只需要姓名和联系信息的客户,但我认为模态不适用于创建、查看或编辑工单,因为它需要为每个工单添加行项目和相关数据等等...有很多。最后,模板似乎没有设置好使用,因为他自己写了很多 js 来让它工作。
目前,存在创建、编辑和详细信息视图,我在每条记录旁边都有 link,但是当我尝试使用 link 时出现错误。也许我不明白路由是如何工作的?在来自 VS 的普通 mvc 模板中,links 具有用于指定控制器和方法的属性,mvc 处理其余部分。
<a asp-action="Edit" asp-route-id="@item.WorkOrderID">Edit</a> |
<a asp-action="Details" asp-route-id="@item.WorkOrderID">Details</a> |
<a asp-action="Delete" asp-route-id="@item.WorkOrderID">Delete</a>
我遇到了与我在尝试加载工单页面时遇到的相同错误,但没有将其添加到页面名称或导航提供者,这让我觉得我只需要添加 links到 navigationprovider class 但我不想要主菜单上的 WordOrders 创建页面 link,我想要它在相应记录旁边的迷你菜单上。我已将该页面添加到页面名称 class,但不确定如何为我的主页创建单独的菜单。
public const string CreateWorkOrders = "CreateWorkOrders";
在查看 navigationprovider class 我看到:
context.Manager.MainMenu
而且我想我必须能够创建另一个菜单并像这样向其中添加项目:
context.Manager.NewMenu.AddItem(....
但我无法找到或编辑的 class 中似乎引用了 MainMenu。我应该创建另一个 class 定义 NewMenu 以便我能够在现有的导航提供程序中配置它 class 还是应该为它创建一个单独的导航提供程序 class?
希望我已经说服所有看到这篇文章的人,我在寻求帮助之前做了很多研究。即使 link 一些更详细的文档也会有所帮助。
您可以像这样添加一个新菜单:
context.Manager.Menus.Add(WorkOrders, new MenuDefinition(WorkOrders, L(WorkOrders)));
用法:
context.Manager.Menus[WorkOrders].AddItem(...)
之前有人问过这个问题,但我会更准确地回答我的问题,希望能得到更好的答案:
我已经弄清楚如何将视图添加到 PageNames class:
public const string WorkOrders = "WorkOrders";
然后到 projectNavigationProvider class 让他们进入导航栏:
.AddItem(
new MenuItemDefinition(
PageNames.WorkOrders,
L("WorkOrders"),
url: "WorkOrders",
icon: "business",
requiredPermissionName: PermissionNames.Pages_WorkOrders
)
将我的主要视图添加到主导航栏并正常工作。
但是,我还没有想出如何创建一个全新的菜单以供其他地方使用。在我正在处理的应用程序中,我们有几个页面显示特定 table 中的所有记录,例如工单。但是每个 table 中的每条记录都应该有几个 link 到其他页面,用于创建、编辑、详细信息和删除。
我的一个合作伙伴似乎已经通过使用模式和 ajax 调用控制器端点来解决其他页面上的这个问题。它适用于只需要姓名和联系信息的客户,但我认为模态不适用于创建、查看或编辑工单,因为它需要为每个工单添加行项目和相关数据等等...有很多。最后,模板似乎没有设置好使用,因为他自己写了很多 js 来让它工作。
目前,存在创建、编辑和详细信息视图,我在每条记录旁边都有 link,但是当我尝试使用 link 时出现错误。也许我不明白路由是如何工作的?在来自 VS 的普通 mvc 模板中,links 具有用于指定控制器和方法的属性,mvc 处理其余部分。
<a asp-action="Edit" asp-route-id="@item.WorkOrderID">Edit</a> |
<a asp-action="Details" asp-route-id="@item.WorkOrderID">Details</a> |
<a asp-action="Delete" asp-route-id="@item.WorkOrderID">Delete</a>
我遇到了与我在尝试加载工单页面时遇到的相同错误,但没有将其添加到页面名称或导航提供者,这让我觉得我只需要添加 links到 navigationprovider class 但我不想要主菜单上的 WordOrders 创建页面 link,我想要它在相应记录旁边的迷你菜单上。我已将该页面添加到页面名称 class,但不确定如何为我的主页创建单独的菜单。
public const string CreateWorkOrders = "CreateWorkOrders";
在查看 navigationprovider class 我看到:
context.Manager.MainMenu
而且我想我必须能够创建另一个菜单并像这样向其中添加项目:
context.Manager.NewMenu.AddItem(....
但我无法找到或编辑的 class 中似乎引用了 MainMenu。我应该创建另一个 class 定义 NewMenu 以便我能够在现有的导航提供程序中配置它 class 还是应该为它创建一个单独的导航提供程序 class?
希望我已经说服所有看到这篇文章的人,我在寻求帮助之前做了很多研究。即使 link 一些更详细的文档也会有所帮助。
您可以像这样添加一个新菜单:
context.Manager.Menus.Add(WorkOrders, new MenuDefinition(WorkOrders, L(WorkOrders)));
用法:
context.Manager.Menus[WorkOrders].AddItem(...)