如何通过 c# 从子页面将类分配给母版页中的 <li> 之一?

Posted

技术标签:

【中文标题】如何通过 c# 从子页面将类分配给母版页中的 <li> 之一?【英文标题】:how to assign a class to one of the <li> in master page through c# from child page? 【发布时间】:2011-03-22 15:21:28 【问题描述】:

我有一个带有一堆菜单的母版页,例如:

<ul id="ulMenu" runat="server">
    <li id="A">
    <li id="B">
    <li id="C">
    ..and so on ..
</ul>

我在母版页中有一个函数,我从子页面调用它,例如:

Master.setCurrentMenu("A");

在 Masterpage 的 SetCurrentMenu() 中,由于我将

设置为在服务器上运行,因此我正在动态更改它,例如:
StringBuilder myMenu = new StringBuilder(ulMenu.Innerhtml);
//replace and add class for current page
myMenu .Replace("<li id=\"" + cp + "\"", "<li class='selected' id=\""+ cp +"\"");
ulMenu.InnerHtml = myMenu.ToString();

(其中 cp 是当前上下文中的“A”)

这样我改变了innerHTML,理论上它应该可以正常工作。但是,在我的 我之间有几个服务器标签,比如 所以现在 asp.net 非常高兴地告诉我:

无法修改 Controls 集合,因为该控件包含代码块(即 )。

在这种情况下,我能做的最好的事情是什么?

非常感谢!

ps:编辑这个因为我的

被当作 html 而不是显示出来.. 嗯

【问题讨论】:

【参考方案1】:

这是一个已知问题。在这种情况下,我建议不要使用代码块(最好的做法是使用尽可能少的代码块)。

【讨论】:

是的,我实际上几乎讨厌在 aspx 中使用代码块,但是菜单的文本是从数据库中提取的,另外,它需要对它们进行一些操作才能显示出来,所以必须做这个。我找到了我想要的,这解决了我的问题:***.com/questions/186918/…【参考方案2】:

这个链接有正确答案,事实上,有人可以删除这个问题,因为它是一个重复的问题,我没有意识到这一点。

我终于通过以下方式完成了这项工作:

C# - How to change HTML elements attributes

【讨论】:

以上是关于如何通过 c# 从子页面将类分配给母版页中的 <li> 之一?的主要内容,如果未能解决你的问题,请参考以下文章

使用 css 和 c# 以编程方式更改母版页中的链接

活动菜单项 - asp.net mvc3 母版页

如何使母版页中 div 的高度在内容页中展开?

ASP.NET内容页中访问母版页中的对象

在 asp.net 母版页中更改页脚颜色

asp.net 中母版页、用户控件中属性的调用、赋值方法求解。