日期:2014-05-17  浏览次数:20420 次

ASP.NET 母板页动态改变菜单样式
为了方便,顶部和底部我做成了模板页,可是现在导航条每个菜单点击后要出现被点击的样式效果,代码如下:

HTML code

<ul>
                <li><a class="selected" href="Default.aspx" id="menu1"><strong>首页</strong> </a></li>
                <li><a href="selected.aspx" id="menu2"><strong>开发</strong> </a></li>
                <li><a href="tech.aspx" id="menu3"><strong>支持</strong> </a></li>
                <li><a href="about.aspx" id="menu5"><strong>关于</strong></a></li>
</ul>





现在默认是首页,所以有个 class="selected" 样式,要是点击其他菜单后,class="selected" 就动态到哪个上面

我是母版页,怎么实现,谢谢啦

小弟不才,虚心求教!

------解决方案--------------------
可以直接在MENU控件上编辑啊,这是最简单的一种方法。
------解决方案--------------------
应该可以在母板页的 ContentPlaceHolder1_Init 事件中去检查
当前是哪个内容页面,根据这个再来用js来实现菜单的动态选中
------解决方案--------------------
从最起码的原理上看,你是每一次都重定向到新的页面,而不是使用UpdataPanel来动态修改局部(或者其它Ajax方法)。不得已只能自己设计将菜单的所有状态持久保留下来,然后再新的页面重新绘制。

当然,要想做为一个独立控件方法,那么你还不能将这个菜单状态的持久化设计为全局或者会话范畴的状态,而是要区分为单个菜单的状态。测试时要保证即使一个会话有两个页面上分别有两个菜单,其重定向到新的页面时也能各自准确保持各自的状态。

如果你们公司只是做几个网页,那么这种编程大大超出了能力要求,所以可以考虑放弃这种过分复杂的需求。只有真正做企业应用程序的人才有能力做这种软件。
------解决方案--------------------
最简单但非常不oo的方法。

你可以在母版页的 pageload 事件中判断 当前请求的url。根据不同的url,生成了段js脚本用来控制前端页面的css。
------解决方案--------------------
用一个变量来存取当前访问的菜单名字呢 
像这样来
<li><a href="/" class="<%=CurrentMenu=="首页"?"cu":"" %>"><%=CurrentMenu == "首页" ? "首&nbsp;&nbsp;&nbsp;&nbsp;页" : "返回首页"%></a></li>
<li><a href="/Company/Index.aspx" class="<%=CurrentMenu=="招聘中心"?"cu":"" %>">招聘中心</a></li>
<li><a href="/Person/Index.aspx" class="<%=CurrentMenu=="求职中心"?"cu":"" %>">求职中心</a></li>
------解决方案--------------------
探讨

用一个变量来存取当前访问的菜单名字呢
像这样来
<li><a href="/" class="<%=CurrentMenu=="首页"?"cu":"" %>"><%=CurrentMenu == "首页" ? "首&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;页" : "返回首页"%></a></li>
<li><a href="/Company/Ind……