[英]dynamically change html control style using c#
我想创建一个网站,如果管理员通过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
,管理菜单会自动隐藏
从你的代码,我猜这行:
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;
}
}
您必须使用会话并检查主页顶部是否存在会话值。 当您返回母版页时,它会再次检查会话值,然后您可以编写css代码以将管理菜单设置为可见。
从技术上讲,一步一步的程序:
您可以在此处阅读有关ASP会话的更多信息: http : //www.w3schools.com/asp/asp_sessions.asp
萨巴,你做错了。
我可以想到两种可能的简单方法来实现这一目标:
1.设置Web控件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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.