当前位置: 首页 > 编程日记 > 正文

ASP.NET--Menu控件

http://www.meituan.com/r/i13110281

Menu控件提供静态和动态混合的菜单功能。在向页面添加这个控件的时候,开发人员可以选择将它设置为一个完全动态的菜单,以便整个站点的导航结构都可以显示在菜单中,类似于Windows的Start菜单。另一种选择是,可以采取一种更传统的方法,可使用固定菜单,或者使用混合这两种功能的方法。动态菜单使用由ASP.NET产生的客户端JavaScript代码(同样,不需要开发人员输入任何代码).

为了向站点添加Menu控件,首先必须添加SiteMapDataSource控件,这个控件指定了菜单可以显示的链接以及这些链接出现的顺序。在下面的"试一试"中,将在一个基于WroxUnited应用程序的示例中添加这两个控件。

(1)打开Site.Master文件并切换到Design View.将光标放在页面左边的nav div中。

(2)在将一个SiteMapDataSource控件拖放到nav div.内的页面上(该控件位于工具箱的Data面板上),并在属性窗口中将该控件命名为siteData.

所有的铺垫工作已经完成──接下来,将添加Menu控件本身。

(3)将Menu控件拖放到紧靠SiteMapDataSource控件右边缘的地方。您将看到一个弹出的对话框,──这是Smart Tasks窗口。

在这个对话框中,选择在第3步中创建的siteData数据源。在完成该设置之后,菜单将改变。

(4)单击菜单右上角的小箭头关闭该菜单。现在,选中Menu控件并在属性窗口中将它的StaticDisplayLevels属性设置为2.您将会立即看到变化。

(5)在该控件能以在完整版本的Wrox United站点中的方式工作之前,需要设置它的一些属性值。切换到Source View并在代码中添加如下属性:

 <asp:Menu ID="Menu1" runat="server" DataSourceID="siteData" StaticDisplayLevels="2"

                  orientation="Vertical"

                  StaticSubMenuIndent="0"

                  disappearafter="200"

                  AccessKey="m"                 

                  EnableViewState="false"

                    >

                <DynamicMenuStyle CssClass="dynamicMenu" />

                    <DynamicMenuItemStyle CssClass="dynamicMenuItem" />

               </asp:menu>

(6)现在再次运行站点(按下Ctrl+F5)不带调试功能启动站点。

注意可以将鼠标光标停留在About链接上,片刻之后一个包括History页面的子菜单将显示出来。这就是动态菜单的最佳形式──很不错吧!

操作回顾

添加到Master页面的Menu控件将读取SiteMapDataSource控件(siteData)的内容并根据保存在该数据源中的数据显示一组链接。SiteMapDataSource控件本身不需要任何修改(除了重新命名以外) ──默认情况下,SiteMapDataSource将读取Web.SiteMap文件并扮演Menu控件的中间人,以使它能够根据Web.SiteMap文件的内容显示链接。

如果需要,可以使用表3-3所示的属性定制SiteMapDataSource.

将菜单绑定到SiteMapDataSource控件是从Web.SiteMap数据文件创建链接层次结构的一种简便方法,但使用这个控件还可以完成更多的事情,包括绑定到完全不同的数据源,将控件(除Menu控件以外)与数据相结合。如果必须经常处理以完全不同的格式(Web.SiteMap以外的格式)存储的站点地图数据,那么为了利用SiteMapDataSource控件,必须对SiteMapProvider类进行自定义。创建自定义的数据提供程序是一个相当复杂的过程(这己超出本章的讨论范围),要获得关于该过程的更多信息,可以参考由Bill Evjen编写、Wrox出版社出版的Professional ASP.NET 2.0.

在这个示例中,对Menu控件的修改非常少,只是为它添加了一些属性值。下面的代码显示了添加的属性值:

 <asp:Menu ID="Menu1" runat="server" DataSourceID="siteData" StaticDisplayLevels="2"

                  orientation="Vertical"

                  StaticSubMenuIndent="0"

                  disappearafter="200"

                  AccessKey="m"                 

                  EnableViewState="false"

                    >

                <DynamicMenuStyle CssClass="dynamicMenu" />

                    <DynamicMenuItemStyle CssClass="dynamicMenuItem" />

               </asp:menu>



Menu控件本身的其他属性都很简单。这个示例在Properties面板中设置了列表第一行的两个属性(DataSourceID和StaticDisplayLevels).其他属性控制如下内容:

Orientation:用于在页面上设置一个水平菜单条。
    StaticSubMenuIndent:控制显示了子菜单条目的缩进深度,如果这些菜单层级被设置为以静态模式显示。
    DisappearAfter:指定弹出式菜单在消失前的可视时间长度。
    AccessKey:设置键盘快捷键以增强可用性。
    EanbleViewstate: ASP.NET的功能之一,如果将其设置为true,则页面在回送到服务器时会维护控件的状态。例如,在向服务器提交数据时,对文本框中的值保持不变。这个控件没有必要使用该属性,而且将其禁用将对页面的性能有微小的改善。

除了这些属性以外还有两个属性,它们帮助定义所显示控件的可视风格。DynamicMenuStyle控制弹出式菜单本身的外观,而DynamicMenuItemStyle控制链接的外观。这些内容的风格由css控制。第5章将详细介绍。

本章最后介绍的导航控件是TreeView控件。这个控件在用法上非常类似于Menu控件。

5. TreeView控件

TreeView和Menu控件在使用上非常类似,但显示的结果却完全不同。使用TreeView控件,其实就类似于使用Windows Explorer处理保存在文件系统内的文件、展开或折叠带有子层次结构的节点。

部署该控件非常类似于部署Menu控件;只需将该控件拖放到页面上并选择使用SiteMapDataSource控件提供数据。如果在Wrox United站点上使用该控件,那么页面将如图3-43所示。

注意Home节点和Fixtures节点都是展开的,而About节点没有展开。如果重新放置这个控件,那么除了一些细小的样式差异之外,可以轻松地使用这个控件代替Menu控件进行导航。

转载于:https://www.cnblogs.com/dragonchen/archive/2011/09/24/Menu.html

相关文章:

AI进军服装零售产业:微软小冰与特步推出定制化服装设计生产及零售平台

&#xff08;6月22日&#xff0c;北京&#xff09; 今日&#xff0c;体育用品企业特步集团与微软小冰宣布达成合作&#xff0c;依托微软小冰人工智能创造技术共同推出的定制化服装设计生产及零售平台即将上线。双方携手为消费者提供定制化图案设计&#xff0c;满足每个消费者的…

PHP如何通过Http Post请求发送Json对象数据?

因项目的需要&#xff0c;PHP调用第三方 Java/.Net 写好的 Restful Api&#xff0c;其中有些接口&#xff0c;需要 在发送 POST 请求时&#xff0c;传入对象。 Http中传输对象&#xff0c;最好的表现形式莫过于JSON字符串了&#xff0c;但是作为参数的接收方&#xff0c;又是需…

字符串截取固定长度的方法

这个函数也没有什么特别之处&#xff0c;就是可以截取一定长度的字符串&#xff0c;可能小特点就是len是字节&#xff0c;解决了汉字与英文字节不一样导致直接截取到的长度不一样的问题&#xff0c; #region 字符串截取函数 public static string CutString(string inputStrin…

hql中常用函數介紹二

为什么80%的码农都做不了架构师&#xff1f;>>> 四. ISNULL 函数和 NULLIF 函数SQL Server里的 ISNULL 与 ASP 中的 IsNull不同&#xff0c;SQL Server 中有两个参数&#xff0c;语法&#xff1a; ISNULL(check_expression, replacement_value) check_expression 与…

技术直播:讲一个Python编写监控程序的小故事

今年疫情“黑天鹅”事件改变了大家的生活。相信大家都经历过&#xff0c;每天早晨起床第一件事&#xff0c;就是查看数据。这些数据不仅仅是人们对活着的渴望&#xff0c;也是在建立对战胜疫情的决心。那么技术人怎么能通过自己所学的去进行数据监控呢&#xff1f;今天CSDN邀请…

ios开发之系统信息

1. //手机系统版本 self.phoneVersion [NSString stringWithFormat:"iOS %",[[UIDevice currentDevice] systemVersion]]; 2. // 获取当前设备可用内存(单位&#xff1a;MB&#xff09; - (double)availableMemory { vm_statistics_data_t vmStats; mach_msg_type_n…

混合时空图卷积网络:利用导航数据改进交通预测效果 | KDD 2020

作者 | 高德机器学习团队出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;引言时空预测&#xff08;spatio-temporal forecasting&#xff09;在天气预报、运输规划等领域有着重要的应用价值。交通预测作为一种典型的时空预测问题&#xff0c;具有较高的挑战性。日常通…

MS SQL Server和MySQL区别

- 最近在做MS SQL Server转换成MySQL的工作&#xff0c;总结了点经验&#xff0c;跟大家分享一下。同时这些也会在不断更新。也希望大家补充。   1 MySQL支持enum,和set类型&#xff0c;SQL Server不支持 2 MySQL不支持nchar,nvarchar,ntext类型 3 MySQL的递增语句是AUTO_INC…

DataGrid在分页状态下删除纪录的问题

在使用DataGrid分页的时候&#xff0c;正常情况下&#xff0c;绑定数据库列表纪录时会自动产生分页的效果&#xff0c;然而我发觉在删除纪录的时候总会发生"无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。"的异常&#xff0c;其实解决这个问题很简…

thinkphp pathinfo nginx 无法加载模块:Index

thinkphp 报了 无法加载模块:Index 错误位置 FILE: /var/multrix/wxactivity_archive/ThinkPHP/Library/Think/Dispatcher.class.php  LINE: 177 这个错&#xff0c;刚开始以为是路由错了&#xff0c;还跟了一下代码&#xff0c;始终没有答案&#xff0c;弄了一上午&#xff0…

Linux普通用户启动tomcat

修改tomcat/bin/catalina.sh文件&#xff0c;加入 export JRE_HOME/usr/java/jre1.6.0_27 ------------------------------------------------------ #!/bin/sh # chkconfig: 2345 80 30# description: tomcat starup scriptCATALINA_HOME/usr/local/apache-tomcat-7.0.21su - …

ASP.NET中利用cookies保持客户端信息

作者&#xff1a;未知 请作者速与本人联系我当前所吃的东东都固定为食物&#xff0c;所以一点也不惊讶&#xff0c;这一周的主题为cookies。Cookies用于存储特定用户信息&#xff0c;它提供了Web程序中一种有用的方式。多年以来&#xff0c;JavaScript开发人员已经进行了有关…

​中国自动驾驶技术有多强?你可能还不知道

随着大数据、互联网、5G等技术在汽车领域的不断普及和推广&#xff0c;自动驾驶技术也开始为人们熟知。无论是新能源汽车还是传统汽车&#xff0c;自动驾驶都是业界未来需要抢占的制高点&#xff0c;越来越多的企业在自动驾驶领域开始发力。随着无人驾驶汽车相关法律法规的放宽…

UNIX/Linux系统管理技术手册(3)----bash 数组和算术运算

复杂的数据结构和计算不是 bash 的特长。但它的确至少提供了数组和算术运算。 1.算术运算 所有的 bash 变量的值都是字符串&#xff0c;所以 bash 在赋值的时候并不区分数字 1 和 字符串 "1" 。不同之处在于如何使用变量。下面几行代码展示出了其中的差异&#xff1a…

文件上传的实现(C#)

文件上传一. 在Form中一定要将encType设为"multipart/form-data"&#xff1a;<form id"WebForm3" method"post" encType"multipart/form-data" runat"server" >二. 判断是否有文件上传了&#xff1a;当用户没有选…

C#编程应用--线程与委托

1. C#开发C/S程序&#xff0c;有时需要几个端&#xff0c;如服务器端&#xff0c;管理端&#xff0c;客户端等等&#xff0c; 端与端之间是不同线程或者进程&#xff0c;这就涉及跨线程调用的问题&#xff0c;使用委托或者异步线程是必不可少的&#xff0c;这里是一个简单的委托…

深度整合英特尔傲腾,SmartX首发100us级超低延迟超融合解决方案

6 月 17 日&#xff0c;致力于超融合中高端市场的SmartX公司正式发布基于核心软件 SMTX OS 与英特尔 傲腾™ 持久内存的高性能、低延迟超融合解决方案与SmartX Halo P系列一体机。 SmartX 在业内首次将英特尔傲腾持久内存以App Direct Mode &#xff08;应用直接访问模式&…

caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片

经过前面两篇博文的学习&#xff0c;我们已经训练好了一个caffemodel模型&#xff0c;并生成了一个deploy.prototxt文件&#xff0c;现在我们就利用这两个文件来对一个新的图片进行分类预测。 我们从mnist数据集的test集中随便找一张图片&#xff0c;用来进行实验。 #codingutf…

Android应用程序消息处理机制(Looper、Handler)分析(2)

我们再回到NativeMessageQueue的构造函数中&#xff0c;看看JNI层的Looper对象的创建过程&#xff0c;即看看它的构造函数是如何实现的&#xff0c;这个Looper类实现在frameworks/base/libs/utils/Looper.cpp文件中&#xff1a; Looper::Looper(bool allowNonCallbacks) : …

以下一些使用ASP.NET和VISUAL STUDIO.NET2003的经验和技巧

作者&#xff1a;未知 请作者速与本人联系1,不要在VS里直接复制ASPX文件,因为复制的时候,两个文件会使用同一个类文件,要复制的话,应该建空文件,然后复制页面和代码2,发在项目完工的时候&#xff0c;要想得到一个干净的&#xff0c;仅有必需文件的项目&#xff0c;可以用复制…

微软推出智能语音评测服务,注重解决四大技术障碍

今年5月&#xff0c;在微软开发者大会上&#xff0c;他们宣布推出智能语音评测服务。基于Azure云的认知服务平台&#xff0c;该服务涵盖语音识别、语音合成等技术&#xff0c;主要应用于各种教师评估、作业练习和语言学习等教学场景。 通过市场调研和反馈&#xff0c;他们将语…

这些编程语言程序员工资最高!Java才第四

在众多行业中&#xff0c;程序员属于高薪职业。无论是在国外还是国内&#xff0c;程序员的薪金水平普遍高于其他行业的工作岗位。 高薪的诱惑和充满挑战性的工作&#xff0c;令程序员一直成为备受欢迎的职业。在今年年初&#xff0c;Glassdoor发布的一份调查报告指出&#xff…

仔细选择会话状态提供程序

ASP.NET 为存储应用程序的会话数据提供了三种不同的方法&#xff1a;进程内会话状态、作为 Windows 服务的进程外会话状态和 SQL Server 数据库中的进程外会话状态。每种方法都有自己的优点&#xff0c;但进程内会话状态是迄今为止速度最快的解决方案。如果只在会话状态中存储少…

10.VMware View 4.6安装与部署-view clint和view for ipad连接测试

安装基于 Windows 的 View Client,最终用户需要从物理机打开 View Client 来连接其虚拟桌面。您可以运行基于 Windows 的安装程序文件来安装 View Client 的所有组件。如果 View 管理员启用了某些显示选项&#xff0c;那么除了通过 View Client 访问虚拟桌面外&#xff0c;最终…

免费直播:主流深度框架对比:总有一款适合你~

常常有小伙伴在后台反馈&#xff1a;想了解深度学习该怎么学&#xff1f;自学难度大又没有效果&#xff0c;该怎么办&#xff1f;CSDN为了解决这个难题&#xff0c;联合唐宇迪老师为大家带来了一场精彩的直播【一节课掌握深度学习必备框架】。本次直播将带大家了解在开始深度学…

QCon2016旧金山大会焦点分享者确认

QCon旧金山大会是由InfoQ举办的连续十年的最大的英语会议&#xff0c;它将在今年11月7-9日在旧金山湾区举行。\\在QCon大会涵盖了一系列深入的技术&#xff0c;架构师、资深开发者所关注的国际事件&#xff0c;聚焦创新领域和软件发展趋势&#xff0c;QCon大会每年在美国、中国…

Git 看这一篇就够了

作者 |码农田小齐责编 | Carol封图 | CSDN 下载自视觉中国今天简单讲下 Git 的实现原理&#xff0c;知其所以然才能知其然&#xff1b;并且梳理了日常最常用的 12 个命令&#xff0c;分为三大类分享给你。本文的结构如下&#xff1a;作者和开发原由Git 的数据模型常用命令资源推…

当不使用会话状态时禁用它

并不是所有的应用程序或页都需要针对于具体用户的会话状态&#xff0c;您应该对任何不需要会话状态的应用程序或页禁用会话状态。 若要禁用页的会话状态&#xff0c;请将 Page 指令中的 EnableSessionState 属性设置为 false。例如&#xff0c;<% Page EnableSessionState&…

jepg图像的存储 转

先把代码贴上&#xff1a; extern "C" { #include "jpeglib.h" #pragma comment(lib,"libjpeg.lib") //把无压缩的图像数据&#xff08;纹理&#xff09;存储成jepg bool appSaveJpegRGB(char *filepath,unsigned char * data,int width,int hei…

使用Spring进行统一日志管理 + 统一异常管理

统一日志和异常管理配置好后&#xff0c;SSH项目中&#xff0c;代码以往散落的log.info() 和 try..catch..finally 再也不见踪影&#xff01; 统一日志异常实现类&#xff1a; [java] view plaincopy package com.pilelot.web.util; import org.apache.log4j.Logger; impor…