时间:2013-12-23 19:32:55

标签: c# css

如果用户没有登录,我想知道如何从此菜单中禁用ChoiceC 使用登录页面的当前站点。

ChoiceC选项仅对已连接到该站点的用户可用。 您能否提供有关如何使用C#执行此任务的链接或示例? 我试图让class =“disabled”但它没有做任何事情,即选项仍然可用。

<div id="menu"> 
    <ul id="menua"; class="ul menua">
    <li style="text-align:center;padding:9px;" class="smallwhitetext"></li> 
        <li><a href="../pages/ChoiceA.aspx">ChoiceA</a></li>
        <li><a href="#">MenuA</a>
            <ul>
                <li><a href="../pages/MenuAoption1.aspx">option 1</a></li>
                <li><a href="../pages/MenuAoption2.aspx">option 2</a></li>
            </ul>
        </li>
        <li><a href="../pages/ChoiceB.aspx">Choice B</a></li>
        <li class="disabled">
            <a href="../pages/ChoiceC.aspx">Choice C</a>
        </li>
    </ul>
</div> 

3 个答案:

答案 0 :(得分:0)

我建议采用两步法。首先,如果没有登录,则不要让C#代码输出列表项中的链接。其次,通过对该项应用类来更改列表项的样式,以向用户指示它们不是登录,因此该项目不可用。

简单地将一个类应用于该项目将不起作用。

答案 1 :(得分:0)

我不确定您使用什么方法来构建菜单和选项,但通常最好在服务器上生成页面时完成。只需将条件选项包含在if语句中,即可检查批准。这是旧样式的一些伪代码:

<ul>
  <li>ChoiceA</li>
  <li>MenuA
    <ul>
      <li>option 1</li>
      <li>option 2</li>
    </ul>
  </li>
  <li>ChoiceB</li>
  <% if( userIsAuthenticated) { %>
  <li>ChoiceC</li>
  <% } %>
</ul>

现在我知道有很多方法可以用MVC和模板和东西输出HMTL,但是因为你没有提到任何特定的技术,所以我选择了旧式。

希望它有所帮助!

修改

您也可以跳过C#和HTML的混合,就像以前在ASP中所做的那样,并且仍然可以通过简单的方式在PHP和其他人中完成:

if(userIsAuthenticated) {
    Response.Write(@"<li><a href=""your link"">Choice C</a></li>");
}

缺点是,当你得到很多引号时,它更容易错过一些而且更难读。另外,你不会得到HTML的代码着色。

注意: @用于逐字字符串文字,它会转义除引号之外的每个特殊字符。您可以使用双引号而不是通常的\来转义它们。

答案 2 :(得分:0)

<ul id="menua"; class="ul menua">
   <li><a href="../pages/OptionA.aspx">Option A</a></li>
   <li><a href="../pages/OptionB.aspx">Option B</a></li>
   <% if(userIdAuthenticated) {  %>
      <li><a href="../pages/OptionC.aspx">Option C</a> </li>'
   <% } %> 
</ul>

这是有效但仍然有一个小错误。 我得到的唯一错误是顶部ul以绿色下划线,并显示以下错误消息验证(XHTML5)元素ul的开始和结束标记之间不允许使用文本。