ASP.NET中的活动链接样式
我的ASP.NET网站上的主菜单有问题。我想要的是,当用户单击一个链接时,它应该将其颜色更改为黑色,并保持黑色,直到用户单击其他链接 换句话说:我想突出显示所选链接ASP.NET中的活动链接样式,asp.net,javascript,jquery,css,Asp.net,Javascript,Jquery,Css,我的ASP.NET网站上的主菜单有问题。我想要的是,当用户单击一个链接时,它应该将其颜色更改为黑色,并保持黑色,直到用户单击其他链接 换句话说:我想突出显示所选链接 到目前为止,我已经使用了一些解决方案JavaScript(应该考虑使用jQuery,我想),但问题是,样式不存在于页面回发(或看起来…..)/P> 我当前的javascript: <script type="text/javascript"> var last = "none"; function Lin
到目前为止,我已经使用了一些解决方案JavaScript(应该考虑使用jQuery,我想),但问题是,样式不存在于页面回发(或看起来…..)/P> 我当前的javascript:
<script type="text/javascript">
var last = "none";
function LinkSelector(link) {
if (last != "none") {
document.getElementById(last).className = "NormalLink";
}
document.getElementById(link).className = "ActiveLink";
last = link;
}
</script>
var last=“无”;
功能链接选择器(链接){
如果(最后一个!=“无”){
document.getElementById(last).className=“NormalLink”;
}
document.getElementById(link).className=“ActiveLink”;
最后=链接;
}
正如我所写的,它确实会在单击时更改类名,但在加载新页面时不会保持这种方式
有人对此有解决办法吗?:)
提前谢谢
祝你一切顺利
Bo通常,我会使用ASP:Menu控件。它提供了对其中菜单项的适当控制 例如,这里有一个我在母版页中转储并在初始页面点击期间运行的通用方法。此方法在菜单控件中的菜单项上循环,并选择与当前URL对应的菜单项
protected void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
SelectMenuItem();
}
}
private void SelectMenuItem() {
string rawurl = Request.RawUrl.ToLower();
rawurl = rawurl.Substring(rawurl.LastIndexOf("/") + 1);
if (rawurl.IndexOf("?") >= 0)
rawurl = rawurl.Substring(0, rawurl.IndexOf("?"));
foreach (MenuItem mi in mnuMain.Items) {
if (mi.ChildItems.Count == 0) {
if (mi.Value == rawurl) {
mi.Selected = true;
break;
}
}
else {
foreach (MenuItem cmi in mi.ChildItems) {
if (cmi.Value == rawurl) {
mi.Selected = true;
break;
}
}
if (mi.Selected)
break;
}
}
}
下面是我的asp菜单控件中的一些菜单项。注意,在上面的方法中,我使用Value属性来帮助我指出哪个菜单项属于请求的URL
<Items>
<asp:MenuItem Text="Forms" Value="authorization">
<asp:MenuItem Text="New Authorization Form" Value="createauthform.aspx" NavigateUrl="~/CreateAuthForm.aspx"></asp:MenuItem>
<asp:MenuItem Text="Manage My Authorization Forms" Value="myrequests.aspx" NavigateUrl="~/MyRequests.aspx"></asp:MenuItem>
<asp:MenuItem Text="Audit Attendance Form" Value="auditform.aspx" NavigateUrl="~/AuditForm.aspx"></asp:MenuItem>
<asp:MenuItem Text="Tax Determination Statement" Value="taxstatement.aspx" NavigateUrl="~/TaxStatement.aspx"></asp:MenuItem>
</asp:MenuItem>
</Items>
通常,我会使用ASP:Menu控件。它提供了对其中菜单项的适当控制 例如,这里有一个我在母版页中转储并在初始页面点击期间运行的通用方法。此方法在菜单控件中的菜单项上循环,并选择与当前URL对应的菜单项
protected void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
SelectMenuItem();
}
}
private void SelectMenuItem() {
string rawurl = Request.RawUrl.ToLower();
rawurl = rawurl.Substring(rawurl.LastIndexOf("/") + 1);
if (rawurl.IndexOf("?") >= 0)
rawurl = rawurl.Substring(0, rawurl.IndexOf("?"));
foreach (MenuItem mi in mnuMain.Items) {
if (mi.ChildItems.Count == 0) {
if (mi.Value == rawurl) {
mi.Selected = true;
break;
}
}
else {
foreach (MenuItem cmi in mi.ChildItems) {
if (cmi.Value == rawurl) {
mi.Selected = true;
break;
}
}
if (mi.Selected)
break;
}
}
}
下面是我的asp菜单控件中的一些菜单项。注意,在上面的方法中,我使用Value属性来帮助我指出哪个菜单项属于请求的URL
<Items>
<asp:MenuItem Text="Forms" Value="authorization">
<asp:MenuItem Text="New Authorization Form" Value="createauthform.aspx" NavigateUrl="~/CreateAuthForm.aspx"></asp:MenuItem>
<asp:MenuItem Text="Manage My Authorization Forms" Value="myrequests.aspx" NavigateUrl="~/MyRequests.aspx"></asp:MenuItem>
<asp:MenuItem Text="Audit Attendance Form" Value="auditform.aspx" NavigateUrl="~/AuditForm.aspx"></asp:MenuItem>
<asp:MenuItem Text="Tax Determination Statement" Value="taxstatement.aspx" NavigateUrl="~/TaxStatement.aspx"></asp:MenuItem>
</asp:MenuItem>
</Items>
考虑将“last”变量实现为函数的静态成员,如下所示。这样,它的值将在函数调用之间保留。我不确定它是否在页面加载之间保留,但您可以测试它
如果没有,您必须以某种方式指示ASP记住该值。考虑到这一点,我和总权重一样有用。考虑将“last”变量实现为函数的静态成员,如下所示。这样,它的值将在函数调用之间保留。我不确定它是否在页面加载之间保留,但您可以测试它
如果没有,您必须以某种方式指示ASP记住该值。关于这一点,我很有用。还应该指出菜单和javascript在母版页上。还应该指出菜单和javascript在母版页上。嗨,Jagd,谢谢你的回答。我正在努力使它正确:使用菜单控件,您可以设置StaticMenuItemSelected Foreground=“Black”(或类似的)样式,当您设置mi.Selected=true时,该样式会被“触发”;在你的codebehind中,对吗?有很多标签可以用来设置控件的样式。设置菜单控件样式的最简单方法是使用智能标记(从设计视图)并对其应用方案(智能标记->自动格式化)。对其应用方案后,返回到源代码视图(html代码),并在所有设置菜单项样式的标记处取一个峰值。您应该会看到很多(StaticSelectedStyle、StaticMenuItemStyle、StaticHoverStyle等)。Jagd,这太完美了!它的工作原理和我想的一样:)非常感谢!酷,它使用URL。“我没有想到这点。”博莫滕森——我很高兴它对你有用!另外,我忘了提到,我编写上述函数选择菜单项的原因是,如果用户单击其子菜单项之一,asp菜单控件将不会选择父菜单项。例如,假设您有一个名为Cars的父菜单项,它有一个名为Honda、Ford、Chevy的子菜单项。用户单击雪佛兰,页面重定向到雪佛兰页面。此时(如果我没记错的话),Chevy页面上不会选择Cars菜单项,因此我的方法是自动选择父菜单项。嗨,Jagd,谢谢你的回答。我正在努力使它正确:使用菜单控件,您可以设置StaticMenuItemSelected Foreground=“Black”(或类似的)样式,当您设置mi.Selected=true时,该样式会被“触发”;在你的codebehind中,对吗?有很多标签可以用来设置控件的样式。设置菜单控件样式的最简单方法是使用智能标记(从设计视图)并对其应用方案(智能标记->自动格式化)。对其应用方案后,返回到源代码视图(html代码),并在所有设置菜单项样式的标记处取一个峰值。您应该会看到很多(StaticSelectedStyle、StaticMenuItemStyle、StaticHoverStyle等)。Jagd,这太完美了!它的工作原理和我想的一样:)非常感谢!酷,它使用URL。“我没有想到这点。”博莫滕森——我很高兴它对你有用!另外,我忘了提到,我编写上述函数选择菜单项的原因是,如果用户单击其子菜单项之一,asp菜单控件将不会选择父菜单项。例如,假设您有一个名为Cars的父菜单项,它有一个名为Honda、Ford、Chevy的子菜单项。用户单击雪佛兰,页面重定向到雪佛兰页面。此时(如果我没记错的话),Chevy页面上不会选择Cars菜单项,因此我自动选择父菜单项的方法。littlegreen,谢谢你的建议,会让我想起静态成员函数:)不幸的是,这次没有解决我的问题。littlegreen,谢谢