【问题标题】:Why my link is not working on Asp.Net Master Page?为什么我的链接在 Asp.Net 母版页上不起作用?
【发布时间】:2017-09-01 00:05:12
【问题描述】:

我在侧导航栏上有一个给定的两个链接。但它不起作用,为什么?

这是我的代码:

Admin.Master

<div class="w3-sidebar w3-bar-block w3-collapse w3-card-2 w3-animate-left" style="width: 200px; padding-top: 50px;" id="mySidebar">
        <button type="button" class="w3-bar-item w3-button w3-large w3-hide-large" onclick="w3_close()">Close &times;</button>
        <a href="CreateUser.aspx" id="linkCreateUser" class="w3-bar-item w3-button">Create User</a>
        <a href="AdminSecurity.aspx" id="linkSecurity" class="w3-bar-item w3-button">Security</a>
        <%--<a href="#" class="w3-bar-item w3-button">Link 3</a>--%>
    </div>
    <div class="w3-main" style="margin-left: 200px; padding-top: 50px;">

        <div class="w3-container">
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
    </div>

更新

<asp:LinkButton ID="linkCreateUser" runat="server" PostBackUrl="https://www.google.co.in/?gws_rd=ssl" CssClass="w3-bar-item w3-button">Create User</asp:LinkButton>
<asp:HyperLink ID="HyperLink1" runat="server" Text="Create User hyper" NavigateUrl="CreateUser.aspx" CssClass="w3-bar-item w3-button" ></asp:HyperLink>
<a href="AdminSecurity.aspx" runat="server" id="linkSecurity" class="w3-bar-item w3-button">Security</a>

上面的代码出现在chrome浏览器上

Chrome 浏览器

 <a id="HyperLink1" class="w3-bar-item w3-button" href="CreateUser.aspx">Create User hyper</a>
 <a id="linkCreateUser" class="w3-bar-item w3-button active" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$linkCreateUser", "", false, "", "https://www.google.co.in/?gws_rd=ssl", false, true))'>Create User</a>
 <a href="AdminSecurity.aspx" id="linkSecurity" class="w3-bar-item w3-button">Security</a>

Jquery 点击事件

$('.w3-sidebar a').click(function (e) {
    e.preventDefault();   // it's not working because of this. But how can I set class = active for clicking link?
    $('.w3-sidebar a').removeClass('active');
    $(this).addClass('active');
})

【问题讨论】:

  • 你错过了锚标签上的runat="server"
  • 您的意思是“不工作”(抛出 404 或其他错误)?提供更多详细信息(似乎您的页面主要使用 webforms ASPX 而不是 MVC)。
  • @Tetsuyayamamoto 没有回应。没有错误。无需重新加载
  • @Curiousdev 我也试过了
  • 是您的CreateUser.aspxAdminSecurity.aspx 两个页面与当前页面位于同一目录中吗?

标签: html asp.net css webforms master-pages


【解决方案1】:

尝试使用 asp.net 控件,不管它是否有效:

<asp:LinkButton ID="linkCreateUser" runat="server" PostBackUrl="CreateUser.aspx" CssClass="w3-bar-item w3-button">Create User</asp:LinkButton>
<asp:HyperLink ID="linkCreateUser" runat="server" Text="Create User" NavigateUrl="CreateUser.aspx" CssClass="w3-bar-item w3-button" ></asp:HyperLink>

如果仍然无法正常工作,请通过页面上显示的检查元素分享锚标记的最终 html?

【讨论】:

  • 你的锚标签没有触发点击事件?还是它没有转到正确的页面?
  • 是的。它没有任何反应。没有错误信息,什么都没有
  • 点击事件未触发。即使它也不会服务器。我创建一个链接并从服务器重定向。那也行不通
  • 检查标签上的点击事件是否有效? Create User 如果工作,那么您可以使用 window.location.href 重定向到该页面..它的时间解决方案不是永久性的。
  • 改变preventDefault的位置试试。并且您仅使用此代码来检查单击事件?
【解决方案2】:

如果您的页面位于项目的根目录中,只需在您的内部链接前添加“/”:

<a href="/CreateUser.aspx" id="linkCreateUser" class="w3-bar-item w3-button">Create User</a>

<a href="/AdminSecurity.aspx" id="linkSecurity" class="w3-bar-item w3-button">Security</a>

【讨论】:

  • 您的项目中的母版页到底在哪里,它在根目录中吗?
猜你喜欢
  • 2013-06-06
  • 1970-01-01
  • 2017-08-12
  • 2015-02-02
  • 2011-02-10
  • 2013-11-30
  • 1970-01-01
  • 2010-10-31
  • 2017-06-29
相关资源
最近更新 更多