我正在尝试为我的页面中的超链接添加条件。
我不想仅使用像<a href="help/Tutorial.html">Tutorial</a>
这样的特定链接,而是希望为不同的用户显示不同的页面。例如,如果用户以管理员身份登录,则会向他们显示与常规用户不同的链接。
我已将我的超链接修改为:<a onclick="displayTutorial_Click">Tutorial</a>
并添加了此代码:
protected void displayTutorial_Click(object sender, EventArgs e)
{
// figure out user information
userinfo = (UserInfo)Session["UserInfo"];
if (userinfo.user == "Admin")
System.Diagnostics.Process.Start("help/AdminTutorial.html");
else
System.Diagnostics.Process.Start("help/UserTutorial.html");
}
但是这没用。任何人都可以帮我弄清楚如何使 Tutorial 链接正常工作?非常感谢你提前!!!
答案 0 :(得分:14)
锚标记上的onclick
属性将调用客户端函数。 (如果您想在单击链接时调用javascript函数,则可以使用此方法。)
您想要的是服务器端控件,例如LinkButton
:
<asp:LinkButton ID="lnkTutorial" runat="server" Text="Tutorial" OnClick="displayTutorial_Click"/>
这有一个OnClick
属性,可以在你的代码中调用该方法。
进一步研究您的代码,看起来您只是尝试根据用户的访问级别打开不同的教程。您根本不需要事件处理程序。一个更好的方法是在后面的代码中设置LinkButton
控件的终点。
protected void Page_Load(object sender, EventArgs e)
{
userinfo = (UserInfo)Session["UserInfo"];
if (userinfo.user == "Admin")
{
lnkTutorial.PostBackUrl = "help/AdminTutorial.html";
}
else
{
lnkTutorial.PostBackUrl = "help/UserTutorial.html";
}
}
真的,最好先检查一下 用户
。protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserInfo"] != null && ((UserInfo)Session["UserInfo"]).user == "Admin")
{
lnkTutorial.PostBackUrl = "help/AdminTutorial.html";
}
else
{
lnkTutorial.PostBackUrl = "help/UserTutorial.html";
}
}
答案 1 :(得分:6)
这行代码
System.Diagnostics.Process.Start("help/AdminTutorial.html");
不会将管理员用户重定向到新网站,而是在服务器(通常是浏览器,IE)上启动新进程并加载该网站。这肯定不是你想要的。
一个非常简单的解决方案是更改page_load方法中链接的href attribut。
您的aspx代码:
<a href="#" runat="server" id="myLink">Tutorial</a>
你的codebehind / cs代码是page_load:
...
if (userinfo.user == "Admin")
{
myLink.Attributs["href"] = "help/AdminTutorial.html";
}
else
{
myLink.Attributs["href"] = "help/otherSite.html";
}
...
不要忘记在“AdminToturorial.html”上再次检查管理员权限以“防止”黑客攻击。
答案 2 :(得分:1)
这可能对你有帮助。
在.cs页面中,
//Declare a string
public string usertypeurl = "";
//check who is the user
//place your code to check who is the user
//if it is admin
usertypeurl = "help/AdminTutorial.html";
//if it is other
usertypeurl = "help/UserTutorial.html";
在.aspx age中传递此变量
<a href='<%=usertypeurl%>'>Tutorial</a>