【问题标题】:a href enable disable from code behind asp.net c#从asp.net c#后面的代码中启用href启用禁用
【发布时间】:2016-03-24 14:17:46
【问题描述】:

在用户控件的侧边栏菜单中,我想根据用户权限启用/禁用代码后面的 href。我让它 runat="server" 并且在它后面的代码中只给了我禁用的属性,它也不起作用。

例如refindex1如何根据不同的条件启用disable from code behind?

<div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
    <div class="menu_section">
        <ul class="nav side-menu">
            <li><a href="Index.aspx" id="refindex1" runat="server"><i class="fa fa-home"></i>Home</a></li>

            <li><a><i class="fa fa-table"></i>Task Management<span class="fa fa-chevron-down"></span></a>
                <ul class="nav child_menu" style="display: none">

                    <li><a href="Department.aspx">Department</a></li>
                    <li><a href="Employee.aspx">Designation</a></li>
                    <li><a href="Employee.aspx">Employee</a></li>
                    <li><a href="Employee.aspx">Job Master</a></li>
                    <li><a href="Employee.aspx">Job Assigning</a></li>
                </ul>
            </li>

            <li><a href="frmDepartment.aspx"><i class="fa fa-user"></i>My Jobs</a></li>
        </ul>
    </div>
</div>

【问题讨论】:

  • 也发布您的 C# 代码。
  • 在它后面的代码中只显示了 Disabled 所以我尝试使用 divHome.Disabled = true;和 divHome.EnableTheming 和 divHome.EnableViewState 我猜是不相关的。
  • 您的视图是 Web 表单 (.aspx) 还是 MVC 视图 (.cshtml)?
  • 我正在使用 VS15 asp.net 项目并在用户控制 (.ascx) 中工作

标签: c# html asp.net


【解决方案1】:
<li runat="server" id="divHome"><a href="Index.aspx">Home</a>

&lt;li&gt; 上使用runat="server" 而不是&lt;a href&gt;

【讨论】:

  • 在仅显示 divHome.EnableTheming 和 divHome.EnableViewState 的代码中没有为 divHome 启用属性。所以它不起作用。
  • divHome.Visible = false;
  • 实际上,这是侧边栏中的菜单,因此不需要设置为 false。
  • 通过将您的a href 设置为不可见,用户将无法“能够”点击?仅供参考,因为我也在用这个方法。
  • 谢谢 Marco,我用 set Visible false
【解决方案2】:

假设您的标记如下所示

<li><a id="atag" runat="server" href="Department.aspx">Department</a></li>

您可以尝试通过以下方式删除锚标记的href。

atag.Attributes["href"]= "#";

或者删除它

atag.Attributes.Remove("href");

 atag.HRef = "javascript:void(0);";

【讨论】:

  • 我试过删除代码,但是当我在即时窗口中检查时,没有键意味着键计数为 0。如何设置为键。
  • @raja 你所说的键是什么意思?
【解决方案3】:

您可以尝试以下代码。放置一些类以将链接显示为禁用:

refindex1.HRef = "javascript:void(0);";
refindex1.Attributes.Add("class","disable-link"); // or refindex1.Attributes["class"] = "disable-link";

【讨论】:

  • 好的。但我想在代码后面做,因为有一些条件要遵循启用/禁用
  • 你能用这个代替吗:&lt;li&gt;&lt;asp:HyperLink runat="server" id="refindex1" Text="Home" NavigateUrl="Index.aspx"&gt;&lt;/asp:HyperLink&gt;&lt;/li&gt;这样你可以这样做:refindex1.Enabled = false;
  • 我尝试过 HyperLink 和 Linkbutton ,但它会影响侧边栏的 css 和样式。对于侧边栏,我正在使用 colorlib.com/polygon/gentelella/index.html 管理模板
  • 哦对不起。那么唯一的选择是在代码隐藏中操作Hrefclass,正如我已经回答的那样。此外,您可以有两个类“启用链接”和“禁用链接”并根据您的条件使用它。另外,如果有现有的课程,你可以做refindex1.Attributes["class"] = "disable-link existing-class";
  • 感谢 Bikash 我现在使用 Visible = false
猜你喜欢
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
相关资源
最近更新 更多