如何使div不能从后面的代码中选择

时间:2011-09-24 06:29:42

标签: c# asp.net

我的div如下

<div class="menu" id="admindiv" runat="server">
        <ul>
            <li><a href="">welcome to my site<!--[if IE 7]><!--></a><!--<![endif]-->
                <table>
                    <tr>
                        <td>
                            <ul>
                                <li><a href="Reports.aspx">Reports</a></li>
                                <li><a href="Delete.aspx">Delete</a></li>
                            </ul>
                        </td>
                    </tr>
                </table>
                <!--[if lte IE 6]></a><![endif]-->
            </li>
            <!--[if lte IE 6]></a><![endif]-->
        </ul>
</div>

我想在代码隐藏的页面上启用或禁用,意味着我想在某些条件下将此div设置为不可选字段。我尝试了这个,但我没有成功

 protected void Page_Load(object sender, EventArgs e)
{
    admindiv.Attributes.Add("style", "color:gray;");
    admindiv.Attributes.Add("disabled", "true");
}

2 个答案:

答案 0 :(得分:3)

您不能使DIV不可选。如果你想让链接不可点击,这就是代码片段:

<div class="menu" id="admindiv">
        <ul>
            <li><a href="">welcome to my site<!--[if IE 7]><!--></a><!--<![endif]-->
                <table>
                    <tr>
                        <td>
                            <ul>
                                <li>
                                    <asp:HyperLink ID="Link1"  runat="server" Text="Reports" />
                                </li>
                                <li>
                                    <asp:HyperLink ID="Link2"  runat="server" Text="Delete" />
                                </li>
                            </ul>
                        </td>
                    </tr>
                </table>
                <!--[if lte IE 6]></a><![endif]-->
            </li>
            <!--[if lte IE 6]></a><![endif]-->
        </ul>
</div>

AND 代码隐藏:

protected void Page_Load(object sender, EventArgs e) {

    if(isAdmin) { // check for admin user
        Link1.NavigateUrl = "Reports.aspx";
        Link1.NavigateUr2 = "Delete.aspx";
    } else {
        Link1.NavigateUrl = "javascript:return void;";
        Link1.NavigateUr2 = "javascript:return void;";
    }

}

答案 1 :(得分:2)

Div可以显示和隐藏,但不能禁用。如果div是可见的,除非您单独禁用每个项目,否则其内容将处于活动状态。

禁用每个控件的另一个选项是创建一个透明的新div,但它位于要禁用的部分的顶部,然后只显示/隐藏后面代码中的div。

然而,这不是一种安全机制,因为任何拥有浏览器HTML开发人员插件(如firebug)的人都可以删除该div并获得对控件的访问权。

在ASP.NET中禁用链接的最佳方法是添加“onclick”事件(使用链接按钮和超链接):

LinkButton1.Attributes["OnClick"] = “return false;”;