【发布时间】:2011-03-25 15:51:51
【问题描述】:
**我在 C# 上工作。**我想开发包含菜单但菜单项应该从数据库生成的 asp.net 应用程序。我的意图是管理员可以通过仅在数据库上工作来更改菜单项,而无需更改前端。
**
For example: Web page contains Menu as
1. Home
2. About Us
3. Contact Us
**
So if Administrator wants can change About Us menu to Our Clients menu, so administrator only need to modify in database don't touch front end any how.
Any small help also appreciated.
Thanks in advance.
下面是我的 SQL 脚本:
USE [Northwind]
GO
/****** Object: Table [dbo].[Security_Module_Menu] Script Date: 08/05/2010 12:56:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Security_Module_Menu](
[Menu_ID] [int] NOT NULL,
[ParentID] [int] NULL,
[Menu_Name] [nvarchar](500) NULL,
[Menu_Description] [nvarchar](500) NULL,
[Menu_Type] [tinyint] NULL,
[Tree_Level] [tinyint] NULL,
[Target_URL] [nvarchar](200) NULL,
[Image_URL] [nvarchar](200) NULL,
[ToolTips] [nvarchar](50) NULL,
[Has_Charge] [bit] NULL,
[Is_Active] [bit] NULL,
[Active_Date] [smalldatetime] NULL,
[Record_Status] [tinyint] NULL,
[Record_Action_Type] [tinyint] NULL,
CONSTRAINT [PK_Security_Module_Menu] PRIMARY KEY CLUSTERED
(
[Menu_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (1, 0, N'Form', N'Form', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (2, 0, N'Home', N'Home', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (3, 0, N'About', N'About', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (4, 1, N'Background', N'Background', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (5, 1, N'Detail', N'Detail', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (6, 3, N'FAQ', N'FAQ', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (7, 3, N'Forum', N'Forum', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (8, 3, N'ContactUs', N'ContactUs', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (9, 2, N'Report_User', N'Report_User', 2, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (10, 2, N'Report_Login', N'Report_Login', 2, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (11, 5, N'Admin_Detail', N'Admin_Detail', 1, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (12, 5, N'User_Detail', N'User_Detail', 1, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
Menu_Type=1=Form
Menu_Type=2=Report
ParentID=0=MainMenuItem
Tree_Level=1=MainMenuItem.
Tree_Level=2=SubMenuItem.
Tree_Level=3=Sub-SubMenuItem.
在服务器端,AspxMenu 如何与 XML 文件绑定。其实我需要 1) 使用 Linq 创建 XML 文件。 2)然后我需要将此文件与 AspxMenu 绑定。
使用 Linq 我想创建 .xml 文件,如下所示:
XElement xml = new XElement("MyMenu",
from c in db.Security_Module_Menus
where (c.ParentID == 0)
orderby c.Menu_ID
select new XElement("Item",
new XAttribute("Text", c.Menu_Name), new XAttribute("NavigateUrl",c.Target_URL)
)
);
**Fill AspxMenu like bellow:**
XmlDataSource1.DataFile = @"C:\contacts.xml";
XmlDataSource1.XPath = "MyMenu/Item";
我需要帮助来创建 XML 文件。帮助我根据以下标准创建 Xml 文件
Menu_Type=1=Form
Menu_Type=2=Report
ParentID=0=MainMenuItem
Tree_Level=1=MainMenuItem.
Tree_Level=2=SubMenuItem.
Tree_Level=3=Sub-SubMenuItem.
【问题讨论】:
-
您是否在您的应用程序中实现了任何类型的角色?
-
不,我不想使用角色。没有权限的人看不到menuItem。为此我想建立动态菜单
标签: asp.net linq linq-to-xml asp.net-3.5 devexpress