如果用户没有登录,我想知道如何从此菜单中禁用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>
答案 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的开始和结束标记之间不允许使用文本。