我想创建一个网站,如果管理员通过admin.aspx
登录
我想在菜单列表中添加一个导航。
我的菜单列表由<ul>...<li>
组成,即html控件
那么如何在我的母版页菜单中动态添加新的
style { visibility:hidden}
登录成功后,我想将其更改为{visibility:visible }
这是我的主页代码
<ul id="ul_myLst" runat="server">
<li><a href="Testimonials.aspx">Testimonial</a>
</li>
<li><a href="#fakelink">Contact Us</a>
</li>
<li><a href="#fakelink">About Us</a>
</li>
<li><a href="Registration.aspx">Registartion</a>
</li>
<li><a href="OurFaculty.aspx">Our Faculty</a>
</li>
<li id="abc" runat="server" style="visibility:hidden">
<a href="OurFaculty.aspx">Admin</a>
</li>
</ul>
这是我的Default.aspx
代码
if (f.pass.Equals(txtpass.Value)) {
HtmlGenericControl ul = (HtmlGenericControl)(this.Master.FindControl("abc"));
//ul.Attributes["class"] = "admin-p";
ul.Style.Remove("visibility");
ul.Style["visibility"] = "visible";
Response.Redirect("Index.aspx");
}
此代码工作正常但当我再次返回index.aspx
时,管理菜单会自动隐藏
答案 0 :(得分:2)
从你的代码中,我猜这行:
if(f.pass.Equals(txtpass.Value))
是登录过程中某种形式的已保存值。 如果是这种情况并且您有一些隐藏的输入字段或其他内容 - 则每次页面加载()时都会调用设置Admin菜单的方法。根据您在网站上工作的记忆登录值,更改“if”代码。 (会话或视图状态或cookie)
示例:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
setAdminMenu();
}
}
private void setAdminMenu()
{
if(f.pass.Equals(txtpass.Value))
{
abc.Visibility = visible;
}
}
答案 1 :(得分:0)
您必须使用会话并检查主页顶部是否存在会话值。当您返回母版页时,它会再次检查会话值,然后您可以编写css代码将管理菜单设置为可见。
技术上,一步一步的程序: - 1.在第二页上创建会话(default.aspx) 2.检查母版页顶部的会话值:设置if条件,如果存在会话值则写入代码以显示其中的管理菜单。 3.创建一个注销页面以使会话无效。
您可以在此处详细了解ASP会话: - http://www.w3schools.com/asp/asp_sessions.asp
希望它对你有所帮助,谢谢萨巴。 :)
答案 2 :(得分:0)
我可以想到两种可能的简单方法来实现这一目标:
<强> 1。设置网络控件Visible
属性
在后面的主页代码(MasterPage.master.cs
)中,将此行添加到OnLoad
或Page_Load
方法:
var liAdmin = (HtmlGenericControl)Page.FindControl("abc");
liAdmin.Visible = User.IsInRole("Admin");
在MasterPage.master
添加runat="server"
到<li>
代码。
<强> 2。以编程方式添加<li>
在MasterPage.master
添加runat="server"
到<ul>
代码。
在后面的母版页代码中添加OnLoad
或Page_Load
:
if(User.IsInRole("Admin"))
{
var ulMenu = (HtmlGenericControl)Page.FindControl("ul_myLst");
var liAdmin = new HtmlGenericControl("li");
var a = new HtmlAnchor();
a.HRef = "OurFaculty.aspx";
a.InnerText = "Admin";
liAdmin.Controls.Add(a);
ulMenu.Controls.Add(liAdmin);
}